Glass 카메라를 사용하여 이미지와 동영상을 촬영하고 다양한 카메라 미리보기 스트림을 다양한 사용 사례의 문제를 예로 들 수 있습니다
개요
이미지 또는 동영상을 캡처하는 방법에는 두 가지가 있습니다.
- 다음을 사용하여 내장 카메라 활동 호출
startActivityForResult()
가능하면 이 옵션을 사용하세요. Google Cloud API를 사용하여 Android 카메라 API. 이 방법을 사용하는 경우 다음 가이드라인을 따르세요.
- Glass와 마찬가지로 카메라 버튼을 클릭하여 사진을 찍고 길게 클릭하여 동영상을 찍습니다.
- 사진을 촬영했는지 또는 동영상을 녹화했는지 사용자에게 표시합니다.
- 캡처하는 동안 화면을 켜진 상태로 유지합니다.
Glass 시스템과 카메라 공유하기
Glass 소프트웨어에서 Android API를 사용하여 카메라에 액세스하는 경우 사용자가 하드웨어를 누르면 가능한 경우 일시적으로 카메라를 해제하세요. 카메라 버튼
이
onKeyDown()
드림 메서드를 호출하기 위해KEYCODE_CAMERA
카메라 버튼 누름을 처리합니다.카메라를 해제하고
false
를 반환하여 이벤트를 전달하여 내장 Glass 카메라가 시작됩니다.
이미지나 동영상을 캡처하면 Glass가 여기에서 카메라를 회수할 수 있으며
onResume()
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_CAMERA) { // Stop the preview and release the camera. // Execute your logic as quickly as possible // so the capture happens quickly. return false; } else { return super.onKeyDown(keyCode, event); } } @Override protected void onResume() { super.onResume(); // Re-acquire the camera and start the preview. }
이미지 또는 동영상 캡처
이미지
내장된 카메라 Glass 소프트웨어를 사용하여 이미지를 캡처하려면 다음 단계를 따르세요.
- 전화걸기
startActivityForResult(Intent, int)
, 작업 세트:ACTION_IMAGE_CAPTURE
onActivityResult(int, int, android.content.Intent)
: <ph type="x-smartling-placeholder">- </ph>
requestCode
가 다음과 같은 경우에 사용된 요청 코드와 일치하는지 확인합니다. 시작됩니다resultCode
가RESULT_OK
와 일치하는지 확인합니다.- 이미지의 썸네일에 대한 경로를
Intent
님의 는EXTRA_THUMBNAIL_FILE_PATH
키를 누릅니다. - 전체 이미지 경로는
Intent
님의 는EXTRA_PICTURE_FILE_PATH
키를 누릅니다. 이미지 캡처 인텐트가 Glass 소프트웨어의 경우 이미지가 파일에 완전히 기록되지 않을 수 있습니다. 확인 이미지 파일이 있는지 확인하거나FileObserver
드림 를 사용하여 상위 디렉터리를 모니터링합니다. 전체 이미지가 파일을 로드하여 Glass 소프트웨어에서 사용할 수 있습니다.
private static final int TAKE_PICTURE_REQUEST = 1;
private void takePicture() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE_REQUEST && resultCode == RESULT_OK) {
String thumbnailPath = data.getStringExtra(Intents.EXTRA_THUMBNAIL_FILE_PATH);
String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH);
processPictureWhenReady(picturePath);
// TODO: Show the thumbnail to the user while the full picture is being
// processed.
}
super.onActivityResult(requestCode, resultCode, data);
}
private void processPictureWhenReady(final String picturePath) {
final File pictureFile = new File(picturePath);
if (pictureFile.exists()) {
// The picture is ready; process it.
} else {
// The file does not exist yet. Before starting the file observer, you
// can update your UI to let the user know that the application is
// waiting for the picture (for example, by displaying the thumbnail
// image and a progress indicator).
final File parentDirectory = pictureFile.getParentFile();
FileObserver observer = new FileObserver(parentDirectory.getPath(),
FileObserver.CLOSE_WRITE | FileObserver.MOVED_TO) {
// Protect against additional pending events after CLOSE_WRITE
// or MOVED_TO is handled.
private boolean isFileWritten;
@Override
public void onEvent(int event, String path) {
if (!isFileWritten) {
// For safety, make sure that the file that was created in
// the directory is actually the one that we're expecting.
File affectedFile = new File(parentDirectory, path);
isFileWritten = affectedFile.equals(pictureFile);
if (isFileWritten) {
stopWatching();
// Now that the file is ready, recursively call
// processPictureWhenReady again (on the UI thread).
runOnUiThread(new Runnable() {
@Override
public void run() {
processPictureWhenReady(picturePath);
}
});
}
}
}
};
observer.startWatching();
}
}
동영상
내장된 카메라 Glass 소프트웨어를 사용하여 동영상을 캡처하려면 다음 단계를 따르세요.
- 전화걸기
startActivityForResult(Intent, int)
, 작업 세트:ACTION_VIDEO_CAPTURE
onActivityResult(int, int, android.content.Intent)
: <ph type="x-smartling-placeholder">- </ph>
requestCode
가 다음과 같은 경우에 사용된 요청 코드와 일치하는지 확인합니다. 동영상 캡처 인텐트를 시작합니다.resultCode
가RESULT_OK
와 일치하는지 확인합니다.- 동영상의 썸네일에 대한 경로를
Intent
님의 는EXTRA_THUMBNAIL_FILE_PATH
키를 눌러 미리보기 표시 - 녹화된 동영상의 경로는
Intent
님의 는EXTRA_VIDEO_FILE_PATH
키를 누릅니다.