我正在使用Android M(6.0)。在我的服务中,我使用意图调用默认的相机应用程序:
File photo = new File(Environment.getExternalStorageDirectory(), "myFile.jpg");
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
getApplication().startActivity(intent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
} catch (final Exception e) {
e.printStackTrace();
}
在我的默认相机应用中,我可以按物理键ACTION_DOWN
拍摄照片。我的问题是如何以编程方式调用密钥ACTION_DOWN
。我尝试了一些方法,但他们没有工作(没有root)。另一方面,如何在没有按下GUI中的任何内容或手机中的物理按钮的情况下拍照?
拳法:
Runtime.getRuntime().exec("input keyevent " +
Integer.toString(KeyEvent.ACTION_DOWN));
第二种方法
BaseInputConnection mInputConnection = new BaseInputConnection(this, true);
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_HOME, 0);
mInputConnection.sendKeyEvent(down);
第三种方法(不好,因为它需要root手机)
Instrumentation m_Instrumentation = new Instrumentation();
m_Instrumentation.sendKeyDownUpSync( KeyEvent.ACTION_DOWN );
答案 0 :(得分:1)
我们如何在没有按下GUI中的任何内容或手机中的物理按钮的情况下拍照?
直接使用相机API,而不是ACTION_IMAGE_CAPTURE
。