繁体   English   中英

找不到Android Studio摄影机使用活动

[英]Android Studio Camera Use Activity did not found

嗨,您好,使用android studio构建了一个适用于android的简单应用程序,该设备使用我的设备摄像头捕获图像并将其存储到图库,但出现此错误:

 FATAL EXCEPTION: main
                                                                              Process: com.industry.onelove.camerause, PID: 7897
                                                                              android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action..IMAGE_CAPTION (has extras) }
                                                                                  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809)
                                                                                  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:4224)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:4183)
                                                                                  at com.industry.onelove.camerause.HomeActivity.takePhoto(HomeActivity.java:74)
                                                                                  at com.industry.onelove.camerause.HomeActivity.access$000(HomeActivity.java:22)
                                                                                  at com.industry.onelove.camerause.HomeActivity$1.onClick(HomeActivity.java:42)
                                                                                  at android.view.View.performClick(View.java:5610)
                                                                                  at android.view.View$PerformClick.run(View.java:22260)
                                                                                  at android.os.Handler.handleCallback(Handler.java:751)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:154)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

我的代码是:

public class HomeActivity extends Activity {

    private Button button;
    private static String logtag = "CameraAp";
    private static  int Take_pic = 1 ;
    private Uri imageUri;

    //ONCREATE
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        button =(Button) findViewById(R.id.button);
        button.setOnClickListener(cameraListener);
    }
    //BUTTONS LISTENER
    private View.OnClickListener cameraListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            takePhoto(v);
        }
    };

    String mCurrentPhotoPath;

    private File createImageFile() throws IOException {//CREATE FILEPATH WITH DATEFORMAT USE (FROM ANDROID API)
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,
                ".jpg",
                storageDir
        );

        // Save a file: path for use with ACTION_VIEW intents
        mCurrentPhotoPath = image.getAbsolutePath();
        return image;
    }

    private void takePhoto(View v){
        Intent intent = new Intent("android.media.action..IMAGE_CAPTION");
        try {
            createImageFile();
        }catch(IOException io){
            Log.e(logtag, io.toString());
        }
        File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),mCurrentPhotoPath);
        imageUri = Uri.fromFile(photo);
        intent.putExtra(MediaStore.EXTRA_OUTPUT , imageUri);
        startActivityForResult(intent , Take_pic);
    }

    @Override
    protected void onActivityResult( int requestCode , int resultCode , Intent intent)
    {
        super.onActivityResult(requestCode , resultCode, intent);
        if(resultCode == Activity.RESULT_OK){
            Uri selectedImage = imageUri;
            getContentResolver().notifyChange(selectedImage,null);

            ImageView imageView = (ImageView) findViewById(R.id.image_view);
            ContentResolver cr = getContentResolver();
            Bitmap bitmap;
            try{
                bitmap = MediaStore.Images.Media.getBitmap(cr , selectedImage);//CREATE THE BITMAP
                imageView.setImageBitmap(bitmap);//GIVE IMAGE TO IMAGEVIEW AND SHOW TO USER
                MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, mCurrentPhotoPath , "auga me mpeikon");//SAVE IMAGE TO GALERY
            }catch(Exception exp){
                Log.e(logtag, exp.toString());
            }
            Toast.makeText(HomeActivity.this , selectedImage.toString(),Toast.LENGTH_LONG).show();

        }
    }


    //IN ORDER TO SAVE THE IMAGE WE CAN ALSO USE THE API READY FUCTION WHICH SAVES THE FILE TO THE DIRECTORY THROUGH OUR STRING CURRENTPATH
    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        File f = new File(mCurrentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    }
}

我还导入了清单:

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

有人知道为什么吗?

Intent intent = new Intent("android.media.action..IMAGE_CAPTION");

那不是有效的Intent操作。 或者,至少在您的设备上没有支持该应用的应用。

也许你的意思是:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM