2011-03-12 13 views
0

버튼 클릭시 ZXing 스캐너를 호출하는 응용 프로그램에서 작업하고 있습니다. 코드를 스캔 한 후에 코드가 스캔되면 새로운 액티비티가 나타나서 스캔 된 코드를 가져와야하므로 편집 할 수 있으므로 해당 제품 등에서 원하는 양을 입력 할 수 있습니다. 그러나 스캔 한 코드를 가져 오는 방법을 모르겠습니다. 암호.ZXing, 코드를 가져올 수 없습니다.

package org.example.sudoku; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.content.Intent; 
import android.app.AlertDialog; 

public class Sudoku extends Activity implements OnClickListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    // Set up click listeners for all the buttons 

     View exitButton = findViewById(R.id.exit_button); 
     exitButton.setOnClickListener(this); 
     View scanButton = findViewById(R.id.scan_button); 
     scanButton.setOnClickListener(this); 
     View editButton = findViewById(R.id.about_button); 
     editButton.setOnClickListener(this); 

    } 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.scan_button: 
      Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); 
      startActivityForResult(intent, 0); 
     break; 
     case R.id.about_button: 
      Intent about = new Intent(this.getApplicationContext(),About.class); 
      Bundle b = new Bundle(); 

      b.putString("key","blablabla"); 


      about.putExtras(b); 
      startActivityForResult(about, 0); 
     break; 
     case R.id.exit_button: 
      finish(); 
     break; 


        } 
       } 



    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 
       Intent result = new Intent(this.getApplicationContext(),Result.class); 
       Bundle b = new Bundle(); 

       b.putString("contents",contents); 


       intent.putExtras(b); 
       startActivityForResult(result, 0); 



      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
      } 
     } 
    } 

} 

그리고 호출 된 활동은

package org.example.sudoku; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.*; 
import android.content.Intent; 

public class Result extends Activity implements OnClickListener { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.result); 
     View finishButton =findViewById(R.id.finish_button); 
     finishButton.setOnClickListener(this); 
     View nextButton =findViewById(R.id.next_button); 
     nextButton.setOnClickListener(this); 

     Bundle b = getIntent().getExtras(); 


     String product = b.getString("contens").toString(); 

     EditText et1 = (EditText) findViewById(R.id.edit_text); 

     et1.setText(product); 



     } 
     public void onClick(View v) { 
      switch (v.getId()) { 

      case R.id.finish_button: 
       finish(); 
      break; 
      case R.id.next_button: 
       Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
       intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); 
       startActivityForResult(intent, 0); 
       finish(); 
      break; 

      } 
     } 
     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 
        Intent result = new Intent(this.getApplicationContext(),Result.class); 
        Bundle b = new Bundle(); 
        b.putString("contents",contents); 
        intent.putExtras(b); 
        startActivityForResult(result, 0); 

       } else if (resultCode == RESULT_CANCELED) { 
        // Handle cancel 
       } 
      } 
     } 




} 

답변

1

가 통합 JAR를 사용하여 결과 이름 : 여기에 지금까지 가지고있는 것입니다. 위에서 수행하려고하는 모든 것을 처리하는 코드를 제공합니다. IntentIntegratorhere의 소스 코드를 볼 수 있으며 여기에 a sample project의 사용법을 보여줍니다.

+0

감사합니다.하지만 그 프로젝트가 무엇을하는지 이해하지 못하고, 왜 내 코드가 작동하지 않는지 알지 못합니다. 스캔 한 코드의 형식이 있습니까? 그 문자열 아닌가요? –

+0

나는 그것을 고쳤다. 결과 대신에, 나는 의도를 썼지 만 지금은 잘 작동합니다. 어떤 lib도없이. 도와 주셔서 감사합니다. 답변을 수락했습니다. –

관련 문제