Android: с помощью справки камеры сделайте снимок и используйте его в моем приложении - PullRequest
1 голос
/ 02 ноября 2010

Я создал стартовую камеру из своего приложения ... и вот так выглядит действие камеры ... Я не знаю, как щелкнуть, чтобы сделать снимок, где кнопка?

Что я хочу сделать, так это то, что когда он сделал снимок и остановился, он нажимает кнопку «Готово», чтобы изображение отображалось в моем приложении.

alt text

Ответы [ 4 ]

1 голос
/ 03 ноября 2010

Я вижу то же самое на developers.android.com, но у моего эмулятора есть работающее приложение камеры.Кнопка камеры на самом эмуляторе ничего не делает, но я могу получить к ней доступ из своего приложения, и она дает мне такую ​​камеру:

Android emulator camera

Вы видите кнопкув левом нижнем углу появляется изображение, затем появляется кнопка OK, которая возвращает его к вашему коду.

Мои настройки эмулятора:

  • Android 1.6 (API Level 4)
  • Скин: HVGA
  • SD-карта: 1024M
  • hw.lcd.densite: 160

Я считаю, что вам нужна SD-карта, не уверенобо всем остальном.

1 голос
/ 13 декабря 2010

Вы можете отлаживать приложение камеры на физическом устройстве с помощью отладки по USB.

Чтобы сделать снимок и сохранить его, вам потребуется обратный вызов, подобный следующему: `

Camera.PictureCallback mPictureCallback = новая камера.PictureCallback () {

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        try {
            File sdTargetDirectory = new File("/sdcard/directory");
            sdTargetDirectory.mkdirs();  // make the above directory if it does not exist
            FileOutputStream fos = null;
            String fileName = "temp";

            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

            fos = new FileOutputStream(sdTargetDirectory.toString() +"/" + fileName + ".jpg");

            BufferedOutputStream bos = new BufferedOutputStream(fos);

            bitmap.compress(CompressFormat.JPEG, 100, bos);

            bos.flush();
            bos.close();


        } 
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
};

Вы можете реализовать этот обратный вызов в случае прикосновения или кнопки следующим образом:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_UP:
        camera.takePicture(null, null, mPictureCallback);
        break;
    }
    return true;
}
1 голос
/ 02 ноября 2010

Вы не можете делать снимки с помощью эмулятора, я слышал, что есть библиотека, которая использует веб-камеру для интеграции функциональности, но я не использовал ее, так что это может быть миф.

Итак,извините, но вам нужно устройство для его проверки.

Per developers.android.com:

Ограничения эмулятора В этом выпуске ограничения эмулятора включают в себя:

  • Нет поддержки для размещения или получения реальных телефонных звонков.Однако вы можете имитировать телефонные звонки (сделанные и полученные) через консоль эмулятора.
  • Нет поддержки USB-подключений
  • Нет поддержки захвата камеры / видео (вход).
  • Нет поддержки подключенных к устройству наушников
  • Нет поддержки для определения подключенного состояния
  • Нет поддержки для определения уровня заряда батареи и состояния зарядки переменного тока
  • Нетподдержка определения вставки / извлечения SD-карты
  • Нет поддержки Bluetooth

Надеюсь, когда-нибудь они его добавят.

0 голосов
/ 09 декабря 2011

Пожалуйста, включите камеру в настройках вашего эмулятора.Вы должны сделать настройки эмулятора следующим образом:

camera support = yes

Я думаю, что эта функция доступна в версии Android 4.0, но я не уверен в этом.

...