AdvancedLayout サンプル プロジェクト内のカメラ操作に問題があります。sony からダウンロードした sdk のサンプル プロジェクト AdvancedLayout に次のコードを追加しています。ここのカメラガイドに従っています https://developer.sony.com/develop/wearables/smarteyeglass-sdk/guides/camera/ エミュレーターでは機能しますが、実際のデバイスでは機能せず、ガイドには startCamera および stopCamera 操作がないことに注意してください合うと思ったところに自分を追加しました。
AndroidManifest.xml 内
<uses-permission android:name="com.sony.smarteyeglass.permission.CAMERA" />
AdvancedLayoutControls.java 内
次のクラスとフィールドを追加
private final SmartEyeglassEventListener mSmartEyeglassEventListener = new MySmartEyeglassEventListener();
class MySmartEyeglassEventListener extends SmartEyeglassEventListener {
@Override
public void onCameraReceived(CameraEvent event) {
Log.d(Constants.LOG_TAG, "onCameraReceived");
utils.stopCamera();
}
@Override
public void onCameraErrorReceived(int error) {
Log.d(Constants.LOG_TAG, "onCameraErrorReceived");
utils.stopCamera();
}
@Override
public void onCameraReceivedFile(String filePath) {
Log.d(Constants.LOG_TAG, "onCameraReceivedFile " + filePath);
utils.stopCamera();
}
@Override
public void onRecordingStatus(long timeInMs, long frames) {
Log.d(Constants.LOG_TAG, "onRecordingStatus");
utils.stopCamera();
}
}
AdvancedLayoutsControl.java 内
次のコードを AdvancedLayoutsControl コンストラクターに追加します
utils = new SmartEyeglassControlUtils(hostAppPackageName, mSmartEyeglassEventListener);
AdvancedLayoutsControl.java 内にもこのオーバーライド関数を追加します。ユーザーが SampleDetail (第 2 レベル) ビューにいるときに、LongPress で写真を撮りたい。
@Override
public void onTouch(ControlTouchEvent event) {
if(event.getAction() == Intents.TOUCH_ACTION_LONGPRESS) {
File folder = new File(Environment.getExternalStorageDirectory(), "myfile");
folder.mkdir();
Date now = new Date();
File file = new File(folder, now.getYear() + "" + now.getMonth() + "" + now.getDate() + "" + now.getHours() + "" + now.getMinutes() + "" + now.getSeconds() + "savefile.jpg");
try {
utils.startCamera(file.getAbsolutePath());
} catch (ControlCameraException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
utils.setCameraMode(SmartEyeglassControl.Intents.CAMERA_JPEG_QUALITY_STANDARD, SmartEyeglassControl.Intents.CAMERA_RESOLUTION_1M, SmartEyeglassControl.Intents.CAMERA_MODE_STILL_TO_FILE);
utils.requestCameraCapture();
}
super.onTouch(event);
}