Проблема с настройкой эмуляции камеры для работы с Tom G's HttpCamera - PullRequest
0 голосов
/ 29 января 2011

Я пытаюсь использовать эмулятор Android для предварительного просмотра видео с веб-камеры. Я использовал пример кода Tom Gibara, за исключением webbroadcaster (вместо этого я использую потоковую передачу VLC через http).

Итак, я изменил приложение SDK «CameraPreview» для использования HttpCamera, но поток так и не появился. Отладка не дает мне никаких подсказок. Интересно, ясно ли что-то очевидное для других? Приложение предварительного просмотра запускается и остается черным.

Примечания:

  1. Я обновил исходный класс CameraPreview, как описано здесь: http://www.inter -fuser.com / 2009/09 / live-camera-preview-in-android-emulator.html , но вместо этого ссылаюсь на httpCamera сокеткамеры.
  2. Я обновил исходный пример Тома, указав тип «Камера» вместо устаревшего типа «CameraDevice».
  3. Ниже мой CameraPreview.java.
  4. СПАСИБО

package com.example.android.apis.graphics;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import java.io.IOException;
import android.graphics.Canvas;

// ----------------------------------------------------------------------

public class CameraPreview extends Activity {    
    private Preview mPreview;

    @Override
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Hide the window title.
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // Create our Preview view and set it as the content of our activity.
        mPreview = new Preview(this);
        setContentView(mPreview);
    }

}

// ----------------------------------------------------------------------

class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    //Camera mCamera;
    HttpCamera mCamera;//changed

    Preview(Context context) {
        super(context);

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        //mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);//changed
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        //mCamera = Camera.open();
     this.StartCameraPreview(holder);
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        //mCamera.stopPreview();//changed
        mCamera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        //Camera.Parameters parameters = mCamera.getParameters();
        //parameters.setPreviewSize(w, h);
        //mCamera.setParameters(parameters);
        //mCamera.startPreview();
     this.StartCameraPreview(holder);
    }

    private void StartCameraPreview(SurfaceHolder sh)
    {
     mCamera = new HttpCamera("10.213.74.247:443", 640, 480, true);//changed

        try {
           //mCamera.setPreviewDisplay(holder);
         Canvas c = sh.lockCanvas(null);
         mCamera.capture(c);
         sh.unlockCanvasAndPost(c);

        } catch (Exception exception) {
            //mCamera.release();
            mCamera = null;
            // TODO: add more exception handling logic here
        }
    }

}

1 Ответ

1 голос
/ 22 марта 2011

Вы не указали протокол для вашей HttpCamera. Пытаться http://10.213.74.247:443

...