отображение пользовательского вида поверхности в main.xml - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть пользовательский вид поверхности, который мне нужно добавить в мой текущий макет main.xml. это SurfaceView используется для потоковой передачи с камеры в режиме реального времени. У меня проблемы с выполнением этой работы.

У меня нет проблем, если я запускаю код как

     cameraPreview = new HttpCameraPreview(this, null, viewWidth, viewHeight);
setContentView(cameraPreview);

однако, я не хочу, чтобы мой пользовательский вид поверхности был основным. Я хочу, чтобы это был вид поверхности внутри моего main.xml.

надеюсь получить несколько предложений / советов. Я пытался ссылаться на эту ссылку, но тоже не помогло. Рисование SurfaceView из макета xml

спасибо!

часть main.xml, как показано ниже:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
                    <ImageView
               android:id="@+id/preview_image_view"
               android:layout_height="wrap_content"
               android:layout_weight="3.0"
                   android:layout_width="fill_parent"
               />
<SurfaceView Class ="org.saboteur.nikonshooter.HttpCameraPreview"
android:layout_width="fill_parent" 
android:id="@+id/surface_preview" 
android:layout_height="10dip" 
android:layout_weight="3"/>

мой частичный код класса SurfaceView выглядит следующим образом:

  public class HttpCameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private static final String TAG = "test";
    private static final String url = "http://bijint.com/jp/tokei_images/0022.jpg";
    private CanvasThread canvasThread;

    private SurfaceHolder holder;
    private HttpCamera camera;

    private HttpCameraPreview mSurfaceView;

    private int viewWidth;
    private int viewHeight;

    public HttpCameraPreview(Context context, AttributeSet attributeSet, int viewWidth, int viewHeight) {
        super(context, attributeSet);
        Log.e("HttpCameraPreview", "inside HttpCameraPreview()");
        Log.e("HttpCameraPreview", "create surface view to r.id");


        try{
        holder = getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
        this.viewWidth = viewWidth;
        this.viewHeight = viewHeight;
        canvasThread = new CanvasThread();
        catch (Exception e){
            Log.e("HttpCameraPreview", "--->Exception = "+e);
        }
    }

1 Ответ

0 голосов
/ 02 февраля 2012

Почему бы не добавить HttpCameraView в макет вашего main.xml программно.Присвойте своему LinearLayout идентификатор, например "@ + id / parent_view", а затем назовите его как

LinearLayout parentView = (LinearLayout) findViewById(R.id.parent_view);
cameraPreview = new HttpCameraPreview(this, null, viewWidth, viewHeight);
parentView.addView( cameraPreview );
...