[DESCRIPTION]
[SOLUTION]
这个问题是因为launch camera进行拍照的时候,触发Camera拍照的三种方式都没有生效
第一种方式:
// photo and confirm using hardware keys
188 mDevice.pressKeyCode(KeyEvent.KEYCODE_CAMERA);
189 mDevice.waitForIdle(); 190 SystemClock.sleep(5 * DateUtils.SECOND_IN_MILLIS);
191 mDevice.pressKeyCode(KeyEvent.KEYCODE_DPAD_CENTER);
192 mDevice.waitForIdle();
这个是说APP需要接KeyEvent.KEYCODE_CAMERA或者KeyEvent.KEYCODE_DPAD_CENTER
第二种方式:
maybeClick(new UiSelector().resourceId(pkg + ":id/shutter_button"));
202 mDevice.waitForIdle();
203 SystemClock.sleep(5 * DateUtils.SECOND_IN_MILLIS);
204 maybeClick(new UiSelector().resourceId(pkg + ":id/shutter_button"));
205 mDevice.waitForIdle();
206 maybeClick(new UiSelector().resourceId(pkg + ":id/done_button"));
207 mDevice.waitForIdle();
这种是case回去寻找Camera APP中上面那些id名字的res,回去点击这个id进行拍照。如果APP的shutter button起的名字与上面的一样,就可以被点到了
第三种方式: maybeClick(By.pkg(pkg).descContains("Capture"));
216 mDevice.waitForIdle();
217 SystemClock.sleep(5 * DateUtils.SECOND_IN_MILLIS);
218 maybeClick(By.pkg(pkg).descContains("Done"));
219 mDevice.waitForIdle();
这个是查找description名字为“Capture”和“Done”的组件,所以APP也可以为组件添加这样的description
如果用的是自己的camera app,参考第二和第三种方式请自行添加含有对应resouce ID的UI。
关于done,我们内部mtkCam的code里面是下面的path:
res/layout-land/camera_shutter_ok_cancel.xml
res/layout-port/camera_shutter_ok_cancel.xml 把@+id/btn_done这个ID名字改一下