2013-09-26 6 views
0

Я использую этот метод, чтобы получить изображение:обнаружить источник для изображения с камеры андроида

protected void openImageSelection(int intentCode, Uri fileUri) { 
    // Camera. 
    final List<Intent> cameraIntents = new ArrayList<Intent>(); 
    final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    final PackageManager packageManager = getPackageManager(); 
    final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0); 
    for(ResolveInfo res : listCam) { 
     final String packageName = res.activityInfo.packageName; 
     final Intent intent = new Intent(captureIntent); 
     intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); 
     intent.setPackage(packageName); 
     cameraIntents.add(intent); 
    } 

    // Filesystem. 
    final Intent galleryIntent = new Intent(); 
    galleryIntent.setType("image/*"); 
    galleryIntent.setAction(Intent.ACTION_GET_CONTENT); 

    // Chooser of filesystem options. 
    final Intent chooserIntent = Intent.createChooser(galleryIntent, 
         getResources().getString(R.string.magafy_replace_image_tankboon_chooser)); 

    // Add the camera options. 
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{})); 

    startActivityForResult(chooserIntent, intentCode); 
} 

, который я нашел здесь SO, кредиты, когда из-за я просто не помню, из которого после (извините).

Я пытаюсь определить, было ли изображение результатом этого намерения исходит от приложения камеры или галереи. В настоящее время я использую это:

private boolean isTakenByCam(Intent data) { 
     boolean isCamera; 
     if(data == null){ 
      isCamera = true; 
     } else { 
      isCamera = MediaStore.ACTION_IMAGE_CAPTURE.equals(data.getAction()); 
     } 
     return isCamera; 
} 

также из этого же сообщение я думаю.

Проблема заключается в том, что при использовании запасного кулачка все работает нормально (обнаружение из всех приложений-галерей любого вида работает хорошо), но при съемке на камере без запаса data.getAction() возвращает null иногда, а иногда и совсем другое.

Есть ли другой способ узнать источник изображения?

Благодаря

ответ

0

Его не так много ответа, но я решил, что прохождение камеры намерение Ури в качестве дополнительного и просто рассматривать мой результат как Ури на основе вместо использования getExtras().get("data").

Должен попытаться найти другой способ, поскольку я видел, что использование intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); не рекомендуется.

Смежные вопросы