2012-09-18 6 views
5

Intents aracılığıyla bir kamera kullanan basit bir Android uygulamasında ayakta durmaya çalışıyorum. Kod Android documentation here dan hemen hemen düz, ama benim için çalışmıyor.Android camera Intensive RESULT_OK durumunda dönmüyor

Kamera uygulaması, startActivityForResult() çağrısından sonra beklendiği gibi açılır, ancak fotoğraf çektikten sonra hiçbir zaman geri dönmez (?!). Özellikle, bir fotoğraf çektikten ve kabul simgesini (Galaxy Nexus üzerinde onay işareti) seçtikten sonra geri dönmez. Ancak iptal simgesini (aynı telefondaki 'X') seçtikten sonra geri dönüyor.

İşte kod (not, bir Fragment, değil Etkinlik gelen çalışıyorum):

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.my_layout, container, false); 

    final Button btnCamera = (Button) view.findViewById(R.id.cameraid); 

    View.OnClickListener handler = new View.OnClickListener() { 
     public void onClick(View v) { 
      if (v == btnCamera) { 
       Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

       // create a file to save the image 
       File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages"); 
       imagesFolder.mkdirs(); 
       File image = new File(imagesFolder, "image_001.jpg"); 
       Uri uriSavedImage = Uri.fromFile(image); 

       // start the image capture Intent 
       cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
       startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
      } 
     } 
    } 
    btnCamera.setOnClickListener(handler); 
} 

ve

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 
     if (resultCode == Activity.RESULT_OK) { 
      // Image captured and saved to fileUri specified in the Intent 
      Toast.makeText(getActivity(), "Image saved to:\n" + 
        data.getData(), Toast.LENGTH_LONG).show(); 
     } 
     else if (resultCode == Activity.RESULT_CANCELED) { 
      // User cancelled the image capture 
     } else { 
      // Image capture failed, advise user 
     } 
    } 

Ne bu işi yapmak için değiştirmek gerekiyor? Teşekkürler. Ben yanlışlıkla uygulama harici kamera uygulaması dayanıyorsa bu satırlar gerekli değildir sanıyordum

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.CAMERA"/> 

: Ben apaçık satırları eklendiğinde

cevap

12

Üzgünüz, işe yaradı. Ama bunun hakkında yanılmışım! Teşekkürler.

+0

Teşekkürler Dylan, - yapacak. – gcl1