Search code examples
androidcameratextviewpreview

android camera preview with textview


I have camera preview on my android app but when I add an 'id' to the TextView in the xml then the app no longer runs. Are you not allowed to have a textview with an id? I need this because I would like the text to change on screen while having the camera preview?

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent"
 > 
<SurfaceView   android:id="@+id/camerapreview"  
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
/> 
</LinearLayout>

control.xml

<?xml version="1.0" encoding="utf-8"?>

    <ImageView android:src="@drawable/icon" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_gravity="center"
        android:paddingTop="120dp" />
    <TextView android:layout_width="wrap_content" android:id="@+id/mind" 
        android:layout_height="wrap_content" android:text="First Text"
        android:layout_gravity="center" android:paddingTop="50dp"
        android:textSize="30dp" android:textStyle="bold" android:textColor="#FFFFFF" />
    <Button android:id="@+id/takepicture" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Save Image"
        android:layout_gravity="center" android:paddingTop="10dp"/>
</LinearLayout>

main.java:

package com.example.androidcamera;

import java.io.IOException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.TextView;

public class main extends Activity implements SurfaceHolder.Callback {

Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean previewing = false;
LayoutInflater controlInflater = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    getWindow().setFormat(PixelFormat.UNKNOWN);
    surfaceView = (SurfaceView) findViewById(R.id.camerapreview);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    controlInflater = LayoutInflater.from(getBaseContext());
    View viewControl = controlInflater.inflate(R.layout.control, null);
    LayoutParams layoutParamsControl = new LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    this.addContentView(viewControl, layoutParamsControl);

    TextView textGenerateDesc = (TextView) findViewById(R.id.mind);
    textGenerateDesc.setText("hi");

    Button buttonTakePicture = (Button) findViewById(R.id.takepicture);
    buttonTakePicture.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            camera.takePicture(myShutterCallback,    myPictureCallback_RAW,
                    myPictureCallback_JPG);
        }
    });
}

Solution

  • as I can see in the xml you give the textview id as "textview" and in code you take it by R.id.mind

    Did you changed the code here or its the code that you have?