Kamera

Mit der Glass-Kamera können Sie Bilder und Videos aufnehmen und den Vorschaustream der Kamera für verschiedene von verschiedenen Anwendungsfällen.

Übersicht

Sie haben zwei Möglichkeiten, Bilder oder Videos aufzunehmen:

  • Durch Aufrufen der integrierten Kameraaktivität mit startActivityForResult() Verwenden Sie nach Möglichkeit diese Option.
  • Erstellen Sie Ihre eigene Logik mit dem Android Camera API Beachten Sie bei Verwendung dieser Methode die folgenden Richtlinien:

    • Machen Sie ein Bild mit einem Klick auf die Kameraschaltfläche und ein Video mit einem langen Klick – genau wie Glass.
    • Gibt dem Nutzer an, ob ein Bild oder ein Video aufgenommen wurde.
    • Lassen Sie den Bildschirm während der Aufnahme eingeschaltet.

Gemeinsame Nutzung der Kamera mit dem Glass-System

Falls Ihre Glassware die Android-APIs für den Zugriff auf die Kamera nutzt, Lassen Sie die Kamera nach Möglichkeit vorübergehend los, wenn Nutzer die Hardware drücken. Schaltfläche für die Kamera.

  1. Überschreiben Sie die onKeyDown() in Ihren Aktivitäten und Achsenabschnitt KEYCODE_CAMERA für das Drücken von Kameratasten.

  2. Lassen Sie die Kamera los und geben Sie false zurück, um anzugeben, dass Sie den Inhalt nicht verbraucht haben. damit die integrierte Glass-Kamera startet.

  1. Nach der Bild- oder Videoaufnahme kehrt Glass zu Ihrem bei einer Aktivität, bei der du die Kamera zurückfordern kannst 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.
    }
    

Bilder oder Videos aufnehmen

Bilder

So nehmen Sie ein Bild mit der integrierten Glassware der Kamera auf:

  1. Anruf startActivityForResult(Intent, int) mit folgender Aktion: ACTION_IMAGE_CAPTURE
  2. In onActivityResult(int, int, android.content.Intent): <ph type="x-smartling-placeholder">
      </ph>
    1. Der requestCode muss mit dem Anfragecode übereinstimmen, der verwendet wird, wenn und den Intent für die Bilderfassung starten.
    2. Achten Sie darauf, dass resultCode mit RESULT_OK übereinstimmt.
    3. Ermitteln Sie den Pfad zur Miniaturansicht des Bildes über die Intents mit dem EXTRA_THUMBNAIL_FILE_PATH Schlüssel, falls erforderlich.
    4. Den Pfad zum vollständigen Image finden Sie in der Intents Zusatzinformationen EXTRA_PICTURE_FILE_PATH . Wenn der Bilderfassungs-Intent die Steuerung an Ihren Glassware ist das Bild möglicherweise nicht vollständig in die Datei geschrieben. Bestätigen ob die Bilddatei vorhanden ist, oder ein FileObserver um das übergeordnete Verzeichnis zu überwachen. Wenn das vollständige Bild laden Sie die Datei und verwenden Sie sie in Ihrer Glassware.
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();
    }
}

Videos

So nehmen Sie ein Video mit der integrierten Glassware der Kamera auf:

  1. Anruf startActivityForResult(Intent, int) mit folgender Aktion: ACTION_VIDEO_CAPTURE
  2. In onActivityResult(int, int, android.content.Intent): <ph type="x-smartling-placeholder">
      </ph>
    1. Der requestCode muss mit dem Anfragecode übereinstimmen, der verwendet wird, wenn die Absicht der Videoaufnahme zu starten.
    2. Achten Sie darauf, dass resultCode mit RESULT_OK übereinstimmt.
    3. Den Pfad zum Thumbnail des Videos findest du auf der Intents Zusatzinformationen EXTRA_THUMBNAIL_FILE_PATH um gegebenenfalls eine Vorschau anzuzeigen.
    4. Den Pfad zur Videoaufzeichnung finden Sie in der Intents Zusatzinformationen EXTRA_VIDEO_FILE_PATH .