2016-06-07 32 views
1

我为条形码扫描器开发了一个android应用程序,现在我想对检索到的扫描结果进行进一步处理,比如加载URL或在第三方数据源中查看数据。所以我该如何做到这一点。我正在使用android studio进行devloping应用程序。 这里是我的MAinActivity代码:如何处理检索的扫描结果,如加载URL?

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import com.google.zxing.integration.android.IntentIntegrator; 
import com.google.zxing.integration.android.IntentResult; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 
public class MainActivity extends AppCompatActivity implements OnClickListener { 
private Button scanBtn; 
private TextView formatTxt, contentTxt; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    scanBtn = (Button) findViewById(R.id.scan_button); 
    formatTxt = (TextView) findViewById(R.id.scan_format); 
    contentTxt = (TextView) findViewById(R.id.scan_content); 
    scanBtn.setOnClickListener(this); 
} 

public void onClick(View v) { 
    if (v.getId() == R.id.scan_button) { 
     IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
     scanIntegrator.initiateScan(); 
    } 
} 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanningResult != null) { 
     String scanContent = scanningResult.getContents(); 
     String scanFormat = scanningResult.getFormatName(); 
     formatTxt.setText("FORMAT: " + scanFormat); 
     contentTxt.setText("CONTENT: " + scanContent); 
    } else { 
     Toast toast = Toast.makeText(getApplicationContext(), 
       "No scan data received!", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

}

,我使用斑马线库。

这里是我的编辑代码:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanningResult != null) { 
     String scanContent = scanningResult.getContents(); 
     String scanFormat = scanningResult.getFormatName(); 
     formatTxt.setText("FORMAT: " + scanFormat); 
     contentTxt.setText("CONTENT: " + scanContent); 
    URL url; 
     HttpURLConnection urlConnection = null; 
     try { 
      url = new URL("url"); 

      urlConnection = (HttpURLConnection) url 
        .openConnection(); 

      InputStream in = urlConnection.getInputStream(); 

      InputStreamReader isw = new InputStreamReader(in); 

      int data = isw.read(); 
      while (data != -1) { 
       char current = (char) data; 
       data = isw.read(); 
       System.out.print(current); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
     } 
    } else { 
     Toast toast = Toast.makeText(getApplicationContext(), 
       "No scan data received!", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

}

这是正确的方式或不?

+0

请告诉,您用于条码的库。如果你能够粘贴你的代码,以及你如何使用这个库,那将会很棒。 –

回答

0

启动您的扫描仪ActivitystartActivityForResult并覆盖onActivityResult用于处理检索到的数据。

看看here的例子。

+0

你知道这样的例子吗?然后请告诉我。 – tiya

+0

你检查了我提供的链接吗? https://developer.android.com/training/basics/intents/result.html – earthw0rmjim

+0

是的..但我想打电话给我的服务在这个应用程序。而我是新的这..如果你知道任何例子,然后告诉.... – tiya

0

您必须开始新的活动才能打开您的URL。

private void openUrl(String url) { 
    Intent i = new Intent(Intent.ACTION_VIEW); 
    i.setData(Uri.parse(url)); 
    startActivity(i); 
} 

onActivityResult方法中调用此方法。可能scanContent变量是你的URL。