2015-04-22 48 views
-1
public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try { 
      Button scanner = (Button) findViewById(R.id.scanner); 
      scanner.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        Intent intent = new Intent(
          "com.google.zxing.client.android.SCAN"); 
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
        startActivityForResult(intent, 0); 
       } 

      }); 

      Button scanner2 = (Button) findViewById(R.id.scanner2); 
      scanner2.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        Intent intent = new Intent(
          "com.google.zxing.client.android.SCAN"); 
        intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 
        startActivityForResult(intent, 0); 
       } 

      }); 

     } catch (ActivityNotFoundException anfe) { 
      Log.e("onCreate", "Scanner Not Found", anfe); 
     } 

    } 

    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 

       String contents = intent.getStringExtra("SCAN_RESULT"); 
       String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 

       // Handle successful scan 
       // Toast toast = Toast.makeText(this, "Content:" + contents 
       // + " Format:" + format, Toast.LENGTH_LONG); 
       // toast.setGravity(Gravity.TOP, 25, 400); 
       // toast.show(); 

       Toast.makeText(getApplicationContext(), contents, 100).show(); 
      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
       Toast toast = Toast.makeText(this, "Scan was Cancelled!", 
         Toast.LENGTH_LONG); 
       toast.setGravity(Gravity.TOP, 25, 400); 
       toast.show(); 

      } 
     } 
    } 

} 

這是我的代碼我正在掃描使用資興市庫我能夠掃描,但問題是無法在我的actvity類掃描,然後成功的完成它應該當我想獲得價值QR碼打印吐司和掃描活動應完成。請幫助我如何實現這一點。下面獲取掃描的內容使用斑馬線 - Android電子

是我的清單文件:

<activity 
      android:name="com.example.zxing.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.google.zxing.client.android.CaptureActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:screenOrientation="landscape" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateAlwaysHidden" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="com.google.zxing.client.android.SCAN" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

有CaptureActivity我剛剛從谷歌斑馬線發現那位此manliest文件librabry請幫助。

回答

1

onActivityResult需要調用

IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 

使用範例

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (result != null) { 
     String contents = result.getContents(); 
     if (contents != null) { 
     Log.d(TAG, "Success"); 
     // result.toString() holds the result info 
     } else { 
     Log.d(TAG, "Failed"); 
     } 
    } 
    } 

更新 上的掃描按鈕,點擊就以下

Button scanner = (Button) findViewById(R.id.scanner); 
scanner.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     IntentIntegrator integrator = new IntentIntegrator(MainActivity.this); 
     integrator.addExtra("SCAN_WIDTH", 800); 
     integrator.addExtra("SCAN_HEIGHT", 200); 
     integrator.addExtra("RESULT_DISPLAY_DURATION_MS", 3000L); 
     integrator.addExtra("PROMPT_MESSAGE", "Custom prompt to scan a product"); 
     integrator.initiateScan(IntentIntegrator.PRODUCT_CODE_TYPES); 

    } 

}); 

對於QR碼掃描做到這一點

IntentIntegrator integrator = new IntentIntegrator(MainActivity.this); 
integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES); 

按照test以獲得更多信息。

+0

讓我們[繼續聊天討論](http://chat.stackoverflow.com/rooms/75922/discussion-between-user1531170-and-murtaza-khursheed-hussain)。 – user1531170

0

你可以做一些自定義的功能

private void showMsg(String msg) { 
    // TODO Auto-generated method stub 
    final AlertDialog build = new AlertDialog.Builder(this).create(); 
    build.setTitle("Scanning Result"); 
    build.setMessage(msg); 
    build.setCancelable(true); 
    build.setButton(AlertDialog.BUTTON_POSITIVE, " OK ", 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        build.dismiss(); 
       } 
      }); 
    build.show(); 
} 

然後調用函數代替麪包。

showMsg("Product get with " + res);