2015-01-21 2 views
0

Я пробовал и google его много, но не могу найти хотя бы одно решение для этого , когда когда-либо я запускаю его на своем устройстве, он дает следующее исключение, получил этот учебник с этого сайта для захвата изображения с передней камеры без отображения изображения на экране here is the linkАктивность в Android Невозможно запустить Componentinfo

LogCat

04-09 07:35:13.181 12257-12257/com.example22.dell.magicgoodapp E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example22.dell.magicgoodapp, PID: 12257 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example22.dell.magicgoodapp/com.example22.dell.magicgoodapp.MainActivity}: java.lang.RuntimeException: Fail to connect to camera service 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
      at android.os.Handler.dispatchMessage(Handler.java:110) 
      at android.os.Looper.loop(Looper.java:193) 
      at android.app.ActivityThread.main(ActivityThread.java:5292) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.RuntimeException: Fail to connect to camera service 
      at android.hardware.Camera.native_setup(Native Method) 
      at android.hardware.Camera.<init>(Camera.java:469) 
      at android.hardware.Camera.open(Camera.java:424) 
      at com.example22.dell.magicgoodapp.MainActivity.onCreate(Unknown Source) 
      at android.app.Activity.performCreate(Activity.java:5264) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
       at android.app.ActivityThread.performLaunchActivity 
    (ActivityThread.java:2302) 
             at android.app.ActivityThread.handleLaunchActivity 
     (ActivityThread.java:2390) 
                at android.app.ActivityThread.access$800\ 
    (ActivityThread.java:151) 
             at android.app.ActivityThread$H.handleMessage 
    (ActivityThread.java:1321) 
                at android.os.Handler.dispatchMessage(Handler.java:110) 
             at android.os.Looper.loop(Looper.java:193) 
             at android.app.ActivityThread.main(ActivityThread.java:5292) 
             at java.lang.reflect.Method.invokeNative(Native Method) 
             at java.lang.reflect.Method.invoke(Method.java:515) 
             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
     (ZygoteInit.java:824) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
             at dalvik.system.NativeStart.main(Native Method) 

MainActivity

package com.example22.dell.magicgoodapp; 
import android.app.Activity; 
import android.content.pm.PackageManager; 
import android.hardware.Camera; 
import android.hardware.Camera.CameraInfo; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    final static String DEBUG_TAG = "MainActivity"; 
    private Camera camera; 
    private int cameraId = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // do we have a camera? 
     if (!getPackageManager() 
       .hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
      Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG) 
        .show(); 
     } else { 
      cameraId = findFrontFacingCamera(); 
      if (cameraId < 0) { 
       Toast.makeText(this, "No front facing camera found.", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       camera = Camera.open(cameraId); 
      } 
     } 
    } 

    public void onClick(View view) { 
     camera.takePicture(null, null, 
       new PhotoHandler(getApplicationContext())); 
    } 

    private int findFrontFacingCamera() { 
     int cameraId = -1; 
     // Search for the front facing camera 
     int numberOfCameras = Camera.getNumberOfCameras(); 
     for (int i = 0; i < numberOfCameras; i++) { 
      CameraInfo info = new CameraInfo(); 
      Camera.getCameraInfo(i, info); 
      if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { 
       Log.d(DEBUG_TAG, "Camera found"); 
       cameraId = i; 
       break; 
      } 
     } 
     return cameraId; 
    } 

    @Override 
    protected void onPause() { 
     if (camera != null) { 
      camera.release(); 
      camera = null; 
     } 
     super.onPause(); 
    } 

    } 

PhotoHandler класс

package com.example22.dell.magicgoodapp; 

/** 
* Created by DELL on 1/21/2015. 
*/ 
import java.io.File; 
import java.io.FileOutputStream; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.content.Context; 
import android.hardware.Camera; 
import android.hardware.Camera.PictureCallback; 
import android.os.Environment; 
import android.util.Log; 
import android.widget.Toast; 

public class PhotoHandler implements PictureCallback { 

    private final Context context; 

    public PhotoHandler(Context context) { 
     this.context = context; 
    } 

    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 

     File pictureFileDir = getDir(); 

     if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) { 

      Log.d(MainActivity.DEBUG_TAG, "Can't create directory to save image."); 
      Toast.makeText(context, "Can't create directory to save image.", 
        Toast.LENGTH_LONG).show(); 
      return; 

     } 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss"); 
     String date = dateFormat.format(new Date()); 
     String photoFile = "Picture_" + date + ".jpg"; 

     String filename = pictureFileDir.getPath() + File.separator + photoFile; 

     File pictureFile = new File(filename); 

     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 
      Toast.makeText(context, "New Image saved:" + photoFile, 
        Toast.LENGTH_LONG).show(); 
     } catch (Exception error) { 
      Log.d(MainActivity.DEBUG_TAG, "File" + filename + "not saved: " 
        + error.getMessage()); 
      Toast.makeText(context, "Image could not be saved.", 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    private File getDir() { 
     File sdDir = Environment 
       .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
     return new File(sdDir, "CameraAPIDemo"); 
    } 
} 

ответ

1

я думаю, что у вас нету decalred разрешения в menifest

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
+0

sir Я упомянул об этих разрешениях в файле манифеста android – raja121

+0

@ raja121 Также убедитесь, что эти разрешения находятся в ваших тегах манифеста, а не тегах активности и т. Д. –

+0

его выполнение Я дал разрешение после тега переместили его и до в манифесте и его проделали – raja121

0

Это уже было предложено проверить права доступа.

Возможно также, что если камера не была отпущена на одну из ваших других попыток доступа камеры, она находится в плохом состоянии. Это происходит в раннем развитии.

Необходимо перезапустить телефон с текущей настройкой, чтобы убедиться, что камера удерживается. Или проверьте камеру по умолчанию, чтобы убедиться, что она даже загружается или дает ошибку. Это хороший механизм проверки.

В настоящее время у вас есть релиз в жизненном цикле onPause(), и это должно быть то, что вы хотите, чтобы остановить его в нужное время. Но, возможно, у вас не было этого в первоначальном развитии, и сейчас он находится в плохом состоянии.

Смежные вопросы