Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 2 of 2

Thread: Android Camera app

  1. #1
    Junior Member
    Join Date
    Jun 2012
    Posts
    10
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Default Android Camera app

    I am working on an android application that will need to take and store pictures. I'm familiar with java but not with the Android APIs. I tried to start by just including the functions for taking and saving an image using the information on the android developers page(Camera | Android Developers) however when I attempt to run the program it says it had to close. Install is successful though. My activity, preview class and manifest.xml are below. I do not want to use an intent because I will be displaying images and buttons over the preview and be adding buttons to interact wiht the camera. I would really appreciate it if anyone could point out where the problem is or anything like that.

    Activity:

    import android.hardware.*;
    import android.os.*;
    import android.app.*;
    import android.widget.*;
    import android.view.*;
    import android.net.*;
    import java.io.*;
    import android.util.*;
    import java.text.*;
    import java.util.*;
    import android.hardware.Camera.*;
    public class ConverterActivity extends Activity 
    {
        private Camera mCamera;
        private CameraPreview mPreview;
    private PictureCallback mPicture = new PictureCallback() {
    private String TAG;
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
    File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
    if (pictureFile == null){
    // Log.d(TAG, "Error creating media file, check storage permissions: " +
    //  e.getMessage());
    return;
    }
    try {
    FileOutputStream fos = new FileOutputStream(pictureFile);
    fos.write(data);
    fos.close();
    } catch (FileNotFoundException e) {
    Log.d(TAG, "File not found: " + e.getMessage());
    } catch (IOException e) {
    Log.d(TAG, "Error accessing file: " + e.getMessage());
    }
    }
    };
     
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
    // Add a listener to the Capture button
    Button captureButton = (Button) findViewById(R.id.button_capture);
    captureButton.setOnClickListener(
    new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // get an image from the camera
    mCamera.takePicture(null, null, mPicture);
    }
    }
    );
            // Create an instance of Camera
            mCamera = Camera.open(this.getBackCamera());
            // Create our Preview view and set it as the content of our activity.
            mPreview = new CameraPreview(this, mCamera);
            FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
            preview.addView(mPreview);
    }
    @Override
        protected void onPause()
        {
            super.onPause();
            releaseCamera();              // release the camera immediately on pause event
        }
        private void releaseCamera(){
            if (mCamera != null){
                mCamera.release();        // release the camera for other applications
                mCamera = null;
            }
        }
    public static final int MEDIA_TYPE_IMAGE = 1;
    public static final int MEDIA_TYPE_VIDEO = 2;
    /** Create a file Uri for saving an image or video */
    private static Uri getOutputMediaFileUri(int type){
    return Uri.fromFile(getOutputMediaFile(type));
    }
    /** Create a File for saving an image or video */
    private static File getOutputMediaFile(int type){
    // To be safe, you should check that the SDCard is mounted
    // using Environment.getExternalStorageState() before doing this.
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_PICTURES), "MyCameraApp");
    // This location works best if you want the created images to be shared
    // between applications and persist after your app has been uninstalled.
    // Create the storage directory if it does not exist
    if (! mediaStorageDir.exists()){
    if (! mediaStorageDir.mkdirs()){
    Log.d("MyCameraApp", "failed to create directory");
    return null;
    }
    }
    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile;
    if (type == MEDIA_TYPE_IMAGE){
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "IMG_"+ timeStamp + ".jpg");
    } else if(type == MEDIA_TYPE_VIDEO) {
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "VID_"+ timeStamp + ".mp4");
    } else {
    return null;
    }
    return mediaFile;
    }
    public int getBackCamera()
    {
    int numCameras = Camera.getNumberOfCameras();
    CameraInfo cInfo = new CameraInfo();
    for (int i = 0; i < numCameras; i++)
    {
    Camera.getCameraInfo(i, cInfo);
    if (cInfo.facing == CameraInfo.CAMERA_FACING_BACK)
    {
    return i;
    }
    }
    return -1;
    }
    }


    Camera Preview:

    import android.view.*;
    import android.hardware.Camera.*;
    import android.hardware.*; 
    import android.content.*;
    import java.io.*;  
     
    public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
        private SurfaceHolder mHolder;
        private Camera mCamera;
     
        public CameraPreview(Context context, Camera camera) {
            super(context);
            mCamera = camera;
     
            // Install a SurfaceHolder.Callback so we get notified when the
            // underlying surface is created and destroyed.
            mHolder = getHolder();
            mHolder.addCallback(this);
            // deprecated setting, but required on Android versions prior to 3.0
            mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }
     
        public void surfaceCreated(SurfaceHolder holder) {
            // The Surface has been created, now tell the camera where to draw the preview.
            try {
                mCamera.setPreviewDisplay(holder);
                mCamera.startPreview();
            } catch (IOException e) {
                Log.d(TAG, "Error setting camera preview: " + e.getMessage());
            }
        }
     
        public void surfaceDestroyed(SurfaceHolder holder) {
            // empty. Take care of releasing the Camera preview in your activity.
        }
     
        public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
            // If your preview can change or rotate, take care of those events here.
            // Make sure to stop the preview before resizing or reformatting it.
     
            if (mHolder.getSurface() == null){
              // preview surface does not exist
              return;
            }
     
            // stop preview before making changes
            try {
                mCamera.stopPreview();
            } catch (Exception e){
              // ignore: tried to stop a non-existent preview
            }
     
            // set preview size and make any resize, rotate or
            // reformatting changes here
     
            // start preview with new settings
            try {
                mCamera.setPreviewDisplay(mHolder);
                mCamera.startPreview();
     
            } catch (Exception e){
                Log.d(TAG, "Error starting camera preview: " + e.getMessage());
            }
        }
    }


    Manifest.xml

    HTML Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="your.Converter"
              android:versionCode="1"
              android:versionName="1.0" >
         <uses-sdk android:minSdkVersion="10" />
       <uses-permission android:name="android.permissions.CAMERA" />
       <uses-feature android:name="android.hardware.camera" />
       <uses-feature android:name="android.hardware.camera.autofocus" />
         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
       <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
         <activity
          android:name=".ConverterActivity"
          android:label="@string/app_name"
          android:screenOrientation="landscape">
                    <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
         </activity>
       </application>
       </manifest> 


  2. #2
    Junior Member
    Join Date
    Jun 2012
    Posts
    10
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Default Re: Android Camera app

    I found the problem. I said android.permissions.CAMERA I should have said android.permission.CAMERA.

Similar Threads

  1. Replies: 3
    Last Post: July 3rd, 2012, 01:42 PM
  2. Connect Camera with Java
    By cypro in forum File I/O & Other I/O Streams
    Replies: 1
    Last Post: August 29th, 2011, 08:14 AM
  3. 3D camera movement
    By macko in forum Java Theory & Questions
    Replies: 2
    Last Post: May 17th, 2011, 08:53 AM
  4. First Person Camera
    By Aaron in forum What's Wrong With My Code?
    Replies: 1
    Last Post: November 13th, 2010, 01:54 PM
  5. retrieve the video stream from an Axis camera
    By nesrine18 in forum What's Wrong With My Code?
    Replies: 0
    Last Post: April 3rd, 2010, 04:39 AM

Tags for this Thread