2011-07-20 7 views
4

Intent MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERAでカメラを呼び出そうとしています。 ただし、StartActivityForResultを使用してもonActivityResultは呼び出されません。onActivityResultがMediaStore.INTENT_ACTION_STILL_IMAGE_CAMERAのために呼び出されていません

どうすればこの問題を解決できますか?

+0

詳細に –

+0

をお願いし、より詳細に質問してください、あなたが望むものを意味し、何が起こるのです...など –

+1

私は彼が写真を撮って欲しいwheatherユーザーが実行時に決めることができるようにstartActivityForResultでMediaStore.INTENT_ACTION_STILL_IMAGE_CAMERAを呼び出したいですまたはビデオを次にonActivityResult私は画像またはビデオを保存する – Majid

答えて

1
// get image count in media store befor start camera Start camera with chooser 
public void startCameraActivity() { 
     Cursor cursor = loadCursor(); 

     image_count_before = cursor.getCount(); 

     cursor.close(); 

     Intent cameraIntent = new Intent(
       MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
     cameraIntent = Intent.createChooser(cameraIntent, "Select Camera"); 
     List<ResolveInfo> activities = getPackageManager() 
       .queryIntentActivities(cameraIntent, 0); 
     if (activities.size() > 0) 
      startActivityForResult(cameraIntent, CAPTURE_IMAGES_FROM_CAMERA); 
     else 
      Toast.makeText(this, "No Camera application", Toast.LENGTH_SHORT) 
        .show(); 
    } 

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

     switch (requestCode) { 

     case CAPTURE_IMAGES_FROM_CAMERA: 

      exitingCamera(); 
      break; 

     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

    public Cursor loadCursor() { 

     final String[] columns = { MediaStore.Images.Media.DATA, 
       MediaStore.Images.Media._ID }; 

     final String orderBy = MediaStore.Images.Media.DATE_ADDED; 

     return getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
       null, orderBy); 
    } 

    public String[] getImagePaths(Cursor cursor, int startPosition) { 

     int size = cursor.getCount() - startPosition; 

     if (size <= 0) 
      return null; 

     String[] paths = new String[size]; 

     int dataColumnIndex = cursor 
       .getColumnIndex(MediaStore.Images.Media.DATA); 

     for (int i = startPosition; i < cursor.getCount(); i++) { 

      cursor.moveToPosition(i); 

      paths[i - startPosition] = cursor.getString(dataColumnIndex); 
     } 

     return paths; 
    } 

    private void exitingCamera() { 

     Cursor cursor = loadCursor(); 
     String[] paths = getImagePaths(cursor, image_count_before); 
     cursor.close(); 
     new ProcessImage(paths).execute(); 

    } 
+0

私はサイズ= 0 getImagePaths()関数で常に得ています。いくつかの写真をクリックしても、cursor.getCount()はstartPositionと同じままです。なぜこれが起こっているのか? –

関連する問題