How to Open Camera with surface holder in class which extends BroadcastReceiver

532 Views Asked by At

My Class extends broadcastReceiver .I want to turn on torch in ICS ,and it is posible only if you have a surfaceview.How can I make a widget which can turn on torch !Thanks!This code is inccorect!Please help Im a beginner in Android!

public void onReceive(Context context, Intent intent) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.camera_widget);

        if(isLightOn) {

            Log.d(tag, "IS LIGHT ON");
        } else {

            Log.d(tag, "IS LIGHT OFF");
        }

        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        appWidgetManager.updateAppWidget(new ComponentName(context,     FlashlightWidgetProvider.class),views);

        if (isLightOn) {
                if (camera != null) {
                        camera.setPreviewCallback(null);
                        camera.stopPreview();
                        camera.release();
                        camera = null;
                }
                isLightOn = false;
        } else {
                //CAMERa OPEN 


            numberOfCameras = Camera.getNumberOfCameras();

            // Find the ID of the default camera
            CameraInfo cameraInfo = new CameraInfo();
            for (int i = 0; i < numberOfCameras; i++)
            {
                Camera.getCameraInfo(i, cameraInfo);
                if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK)
                {   

                    defaultCameraId = i;

                }
            }

            try{
                 // Open the default i.e. the first rear facing camera.

                camera = Camera.open(defaultCameraId);
                camera.setDisplayOrientation(90);
                mPreview.setCamera(camera);


            } catch( Exception e ){
                Log.e("RECEIVER", "No camera");


                mPreview = new CameraPreview(context, camera);
                LayoutInflater inflater = (LayoutInflater) context.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);


                LinearLayout layout_main = new LinearLayout(context);
                layout_main.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

                layout_main = (LinearLayout) inflater.inflate(R.layout.camera_widget, layout_main);


                FrameLayout frameLayout = (FrameLayout) layout_main.findViewById(R.id.camera_widget_frame);
                CameraPreview mPreview = new CameraPreview(context, camera);
                mPreview.setCamera(camera);
                frameLayout.addView(mPreview);

        }

                        Parameters param = camera.getParameters();
                        param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                        camera.setParameters(param);
                        camera.startPreview();
                  }
0

There are 0 best solutions below