Как сделать снимок с камеры на Android Emulator? - PullRequest
5 голосов
/ 14 декабря 2011

На основании этой статьи Я пытаюсь сделать снимок с камеры на эмуляторе Android. Я следовал инструкциям, как они сказали. Но я не получил положительный результат.

Я получаю Player, равный null, в то время как я использую WebcamBroadcaster.java (приложение Java)

Кто-нибудь достиг этого раньше? Если да, просто дайте мне, как это сделать.

или

Есть ли другой способ сделать снимок с камеры на эмуляторе Android?

Ответы [ 2 ]

9 голосов
/ 23 декабря 2011

В Android-эмуляторе 2.1 мой код работает для захвата изображения , но не работает в других версиях Android

Чтобы запустить камеру для захвата, вы можете запустить камеру для захвата, используя фильтр намерений ниже

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA_RESULT);

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

if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) {
    Bundle extras = data.getExtras();
    if(extras.containsKey("data")) {
        Bitmap bmp = (Bitmap) extras.get("data");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] image = baos.toByteArray();
        if(image != null) {
            //User this byte array in your application
        }
    }else {
        Toast.makeText(getBaseContext(), "Fail to capture Image", Toast.LENGTH_LONG).show();
    }
}

Edit:

Теперь почти во всех эмуляторах этот код работает.

2 голосов
/ 21 декабря 2011

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

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

CameraSource cs = new SocketCamera("192.168.0.100", 9889, 320, 240, true);
if (!cs.open()) { /* deal with failure to obtain camera */ }
while(/*some condition*/) {
  cs.capture(canvas) //capture the frame onto the canvas
}
cs.close();

Какова, кстати, главная цель таких вещей? Все выровненные камеры должны быть тщательно протестированы на реальном устройстве, потому что это может вызвать массу проблем, которых нет в эмуляторе. Реализация камеры для камеры предназначена только для отладки / тестирования!

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

Я надеюсь, что не слишком разочаровал вас этим ответом: /

...