Java Android摄像头可以在模拟器上工作,但不能在手机上工作?
我正在使用Android Studio创建一个应用程序。我想让系统进入手机的摄像头。它在模拟器上工作,我可以拍摄一张图片,并在ImageView中将图片设置为图像 然而,我开始用手机跑步,相机坏了。通常,当我点击ImageButton时,相机会打开,但现在,它会将我重定向回以前打开的页面 这是我的密码: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
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谢谢您,我的版本确实比棒棒糖更高!:)