Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android摄像头可以在模拟器上工作,但不能在手机上工作?_Java_Android_Android Activity_Camera - Fatal编程技术网

Java Android摄像头可以在模拟器上工作,但不能在手机上工作?

Java Android摄像头可以在模拟器上工作,但不能在手机上工作?,java,android,android-activity,camera,Java,Android,Android Activity,Camera,我正在使用Android Studio创建一个应用程序。我想让系统进入手机的摄像头。它在模拟器上工作,我可以拍摄一张图片,并在ImageView中将图片设置为图像 然而,我开始用手机跑步,相机坏了。通常,当我点击ImageButton时,相机会打开,但现在,它会将我重定向回以前打开的页面 这是我的密码: public class DriverActivity extends AppCompatActivity { Button btnDriverBack, btnDriverSubmit; I

我正在使用Android Studio创建一个应用程序。我想让系统进入手机的摄像头。它在模拟器上工作,我可以拍摄一张图片,并在ImageView中将图片设置为图像

然而,我开始用手机跑步,相机坏了。通常,当我点击ImageButton时,相机会打开,但现在,它会将我重定向回以前打开的页面

这是我的密码:

public class DriverActivity extends AppCompatActivity {

Button btnDriverBack, btnDriverSubmit;
ImageButton ibtnDriverPhoto;
ImageView imageDriver;
EditText etDriverFirstName, etDriverLastName, etDriverMiddleName, etDriverBDay;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_driver);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ibtnDriverPhoto = (ImageButton) findViewById(R.id.ibtnDriverPhoto);
    imageDriver = (ImageView) findViewById(R.id.imageDriver);

    etDriverFirstName = (EditText) findViewById(R.id.etDriverFirstName);
    etDriverMiddleName = (EditText) findViewById(R.id.etDriverMiddleName);
    etDriverLastName = (EditText) findViewById(R.id.etDriverLastName);
    etDriverBDay = (EditText) findViewById(R.id.etDriverBDay);

    ibtnDriverPhoto.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(camera, 1);
        }
    });

    btnDriverBack = (Button) findViewById(R.id.btnDriverBack);
    btnDriverBack.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent driveBack = new Intent(DriverActivity.this, SummaryActivity.class);
            startActivity(driveBack);
        }
    });

    btnDriverSubmit = (Button) findViewById(R.id.btnDriverSubmit);
    btnDriverSubmit.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent driverSubmit = new Intent(DriverActivity.this, CreditCardActivity.class);
            startActivity(driverSubmit);
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 1)
    {
        Bitmap license = (Bitmap) data.getExtras().get("data");
        imageDriver.setImageBitmap(license);
    }
}

我已设置了正确的使用权限。任何帮助都将不胜感激,谢谢!!:)

如果您有上述棒棒糖版本,则添加运行时权限

要检查是否存在权限问题,请转到设置->您的应用->权限并手动将其设置为真,如果问题解决,请在打开相机之前在代码中添加运行时权限

先试试这个

private final int REQUEST_CAMERA_USAGE = 200;

if (Build.VERSION.SDK_INT >= 21) {
            int permissionCheck = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA);
            if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_USAGE);
            } else {

            }
        }



 @Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
            case REQUEST_CAMERA_USAGE:
            if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {

            } else {
                Toast.makeText(getApplicationContext(), "This Permission is needed for the app to work perfectly!", Toast.LENGTH_SHORT).show();
            }
        default:
            Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show();
            break;
    }
}

我想你手机的安卓版本是>棒棒糖。所以您必须请求运行时权限才能使用设备摄像头。@SudheeshR谢谢您,我的版本确实比棒棒糖更高!:)