Skip to main content

Open front camera in android program

How to access front camera in android/get number of cameras in android/Program to open front camera in android


Using the code explained below, we can easily find out number of cameras in your android device.


Camera.CameraInfo cameraInfo = newCamera.CameraInfo();
        Log.d("No of cameras",Camera.getNumberOfCameras()+"");
        for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) {
            CameraInfo camInfo = new CameraInfo();
            Camera.getCameraInfo(camNo, camInfo);
           
            if (camInfo.facing==(Camera.CameraInfo.CAMERA_FACING_FRONT)) {
                mCamera = Camera.open(camNo);
            }
        }
        if (mCamera == null) {
           // no front-facing camera, use the first back-facing camera instead.
           // you may instead wish to inform the user of an error here...
             mCamera = Camera.open();
        }

A sample program that take photo using front camera (or back camera if there is no front camera)as background service
package com.project.smartstay.browserapplication;

import java.io.IOException;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.media.AudioManager;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.IBinder;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CameraService extends Service implements SurfaceHolder.Callback{

      //a variable to store a reference to the Surface View at the main.xml file
    private SurfaceView sv;
    boolean previewing = false;
    //a bitmap to display the captured image

     
      //Camera variables
      //a surface holder
      private SurfaceHolder sHolder
      //a variable to control the camera
      private Camera mCamera=null;
      //the camera parameters
      private Parameters parameters;
     
      /** Called when the activity is first created. */
    @Override
    public void onCreate()
    {
        super.onCreate();
        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
        Log.d("No of cameras",Camera.getNumberOfCameras()+"");
        for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) {
            CameraInfo camInfo = new CameraInfo();
            Camera.getCameraInfo(camNo, camInfo);
           
            if (camInfo.facing==(Camera.CameraInfo.CAMERA_FACING_FRONT)) {
                mCamera = Camera.open(camNo);
            }
        }
        if (mCamera == null) {
           // no front-facing camera, use the first back-facing camera instead.
           // you may instead wish to inform the user of an error here...
             mCamera = Camera.open();
        }
      
//        params.
            sv = new SurfaceView(getApplicationContext());
        Log.d("Entered","dfdf");
       
        //get the Surface View at the main.xml file
      
    }
   
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
       Log.d("Entered onstart","dfdf");
       
//          Toast.makeText(getApplicationContext(), "wrking ", Toast.LENGTH_LONG).show();
       try {

           
                   
                   //set camera parameters
                 mCamera.setParameters(parameters);
                 mCamera.startPreview();
                 mCamera.takePicture(null, null, mCall);
            
            } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
       
       
       //Get a surface
         sHolder = sv.getHolder();
      
         //add the callback interface methods defined below as the Surface View callbacks
                
            
         //tells Android that this surface will have its data constantly replaced
         sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// TODO Auto-generated method stub
     
     
     
      return super.onStartCommand(intent, flags, startId);
    }
 
     
    Camera.PictureCallback mCall = new Camera.PictureCallback()
    {
     



       public void onPictureTaken(byte[] data, Camera camera)
       {
             //decode the data obtained by the camera into a Bitmap
      FileOutputStream outStream = null;
                  try{
                      outStream = new FileOutputStream("/sdcard/Image.jpg");
                      outStream.write(data);
                      outStream.close();
                  } catch (FileNotFoundException e){
                      Log.d("CAMERA", e.getMessage());
                  } catch (IOException e){
                      Log.d("CAMERA", e.getMessage());
                  }

           
            }
    };

      @Override
      public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
      }
     
      public void surfaceChanged(SurfaceHolder holder, int format, int width,
                  int height) {
            if(previewing){
                  mCamera.stopPreview();
                  previewing = false;
            }
           
      }

      public void surfaceCreated(SurfaceHolder holder) {
            // TODO Auto-generated method stub
           
      }
     
      public void surfaceDestroyed(SurfaceHolder holder) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
            previewing = false;
           
      }
     
      }

See more

Take photo using intent
Take photo without intent
Capture image without preview
Capture image without surface view as a background service 
Turn off camera shutter sound programatically in android

Comments

  1. do you got any activity in this tutorial? because i install this apk on my emulator it would just said it`s done but "no launcher activity found" what`s your AndroidManifest.xml and main.xml ?? please paste them also. thanks

    ReplyDelete

Post a Comment

Popular posts from this blog

Capture image without surface view as background service in android

Capture image without user knowledge in android/Capture image as background service in android/Take photo without preview in android/ Camera without preview in android  package com.example.picture; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Service; import android.content.Context; import android.content.Intent; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.media.AudioManager; import android.os.IBinder; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class CameraService extends Service {       //Camera variables       //a surface holder       private SurfaceHolder sHolder ;        //a variable to control the camera       private Camera mCamera ;   ...

Custom Spinner in Android

Custom Spinner in Android/Spinner using custom adapter/spinner with icon and text  In this tutorial, i'll show you to customizing spinner in different methods.  To change the normal display of spinner view, add background image using the code " android:background="@drawable/myspinner_background" in the xml. You can also make it customizable by setting up an xml file in drawable folder Custom display with icon in the spinner   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"     >     < Spinner     android:drawSelectorOnTop = "true"     android:id = "@+id/spinner1"     android:layout_width = "match_parent"     and...

Coroutine- A complete tutorial

 What are coroutines? To know about coroutine, first you need to know about asynchronous programming, thread and multithreading concept. What is a thread? Thread describes in which context the function or sequence of instructions should be executed. So, every block of code or functions runs in a thread, right? Also, you can load multiple threads to perform different block of codes  How to start a thread? Thread thread = new Thread(){     public void run(){       System.out.println("This is a thread");     }   }     thread.start(); So when coming to android, before learning about coroutines we need to discuss some scenarios. Normally how an app works when user launch an application. When user launchers the application, a main thread is created. This thread is intended to do small operations like button clicks, UI interaction , small mathematical operations. We cant perform long running op...