से कम चल रहे डिवाइसों पर कैमरामैनेजर मुझे एक समस्या का सामना करना पड़ रहा है जहां मैं दोनों कैमरा (लॉलीपॉप डिवाइस से कम) और कैमरामेनगर क्लास (लॉलीपॉप और उपरोक्त डिवाइस) का उपयोग कर रहा हूं।लॉलीपॉप
उपकरणों कि लॉलीपॉप दुर्घटनाओं की तुलना में कम चलाने के लिए, मेरा मानना है कि इस
import android.hardware.camera2.CameraManager;
भाग की वजह से है। मैं इस
package com.example.DeviceCommands;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.Parameters;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Build;
public class FlashController
{
Context _context;
boolean _is_supported = false;
boolean _enabled = false;
Object _camera;
@TargetApi(Build.VERSION_CODES.L) public FlashController(Context context)
{
if (context.getPackageManager().hasSystemFeature(PackageManager
.FEATURE_CAMERA_FLASH))
{
_context = context;
_is_supported = true;
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP)
{
Camera camera = Camera.open();
if (camera == null)
{
_is_supported = false;
System.out.println("NOT SUPPORTED!");
return;
}
_camera = camera;
}
else
{
CameraManager camera = (CameraManager) _context.getSystemService(Context.CAMERA_SERVICE);
_camera = camera;
}
}
}
@TargetApi(Build.VERSION_CODES.L) public void enableFlashLight()
{
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP)
{
Camera camera = (Camera) _camera;
Camera.Parameters parameters = camera.getParameters();
if(!parameters.getFlashMode().equals(android.hardware
.Camera.Parameters.FLASH_MODE_TORCH)
&& !_enabled)
{
Parameters params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
_enabled = true;
camera.autoFocus(new AutoFocusCallback()
{
public void onAutoFocus(boolean success, Camera camera)
{
}
});
}
}
else
{
//CameraManager manager =(CameraManager) _context.getSystemService(Context.CAMERA_SERVICE);
try
{
CameraManager camera = (CameraManager) _camera;
for(int i = 0; i < camera.getCameraIdList().length; i++)
{
System.out.println("Camera=" + camera.getCameraCharacteristics(
camera.getCameraIdList()[i]));
}
}
catch (CameraAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void disableFlashLight()
{
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP)
{
Camera cam = Camera.open();
Camera.Parameters parameters = cam.getParameters();
if(parameters.getFlashMode().equals(android.hardware
.Camera.Parameters.FLASH_MODE_TORCH))
{
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(parameters);
cam.release();
}
}
}
}
काम करता है, तो import
हिस्सा लॉलीपॉप दुर्घटना की तुलना में कम चलाने वाले उपकरणों कर देगा कैसे बना सकते हैं?
किसी भी मदद और सलाह के लिए धन्यवाद!
संपादित करें: उपरोक्त संपूर्ण वर्ग को जोड़ा गया। Logcat उत्पादन
06-09 19:44:30.219: E/ViewRootImpl(956): sendUserActionEvent() mView == null
06-09 19:44:31.360: E/dalvikvm(956): Could not find class 'android.hardware.camera2.CameraManager', referenced from method com.example.DeviceCommands.FlashController.<init>
06-09 19:44:31.360: W/dalvikvm(956): VFY: unable to resolve check-cast 122 (Landroid/hardware/camera2/CameraManager;) in Lcom/example/DeviceCommands/FlashController;
06-09 19:44:31.360: D/dalvikvm(956): VFY: replacing opcode 0x1f at 0x003a
06-09 19:44:31.367: E/dalvikvm(956): Could not find class 'android.hardware.camera2.CameraManager', referenced from method com.example.DeviceCommands.FlashController.enableFlashLight
06-09 19:44:31.367: W/dalvikvm(956): VFY: unable to resolve check-cast 122 (Landroid/hardware/camera2/CameraManager;) in Lcom/example/DeviceCommands/FlashController;
06-09 19:44:31.367: D/dalvikvm(956): VFY: replacing opcode 0x1f at 0x0040
06-09 19:44:31.367: W/dalvikvm(956): VFY: unable to resolve exception class 120 (Landroid/hardware/camera2/CameraAccessException;)
06-09 19:44:31.367: W/dalvikvm(956): VFY: unable to find exception handler at addr 0x6b
06-09 19:44:31.367: W/dalvikvm(956): VFY: rejected Lcom/example/DeviceCommands/FlashController;.enableFlashLight()V
06-09 19:44:31.367: W/dalvikvm(956): VFY: rejecting opcode 0x0d at 0x006b
06-09 19:44:31.367: W/dalvikvm(956): VFY: rejected Lcom/example/DeviceCommands/FlashController;.enableFlashLight()V
06-09 19:44:31.367: W/dalvikvm(956): Verifier rejected class Lcom/example/DeviceCommands/FlashController;
06-09 19:44:31.367: D/AndroidRuntime(956): Shutting down VM
06-09 19:44:31.367: W/dalvikvm(956): threadid=1: thread exiting with uncaught exception (group=0x4100d930)
06-09 19:44:31.375: E/AndroidRuntime(956): FATAL EXCEPTION: main
06-09 19:44:31.375: E/AndroidRuntime(956): java.lang.VerifyError: com/example/DeviceCommands/FlashController
06-09 19:44:31.375: E/AndroidRuntime(956): at com.example.babymonitorer.MainActivity.onClick(MainActivity.java:121)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.view.View.performClick(View.java:4421)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.view.View$PerformClick.run(View.java:18190)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.os.Handler.handleCallback(Handler.java:725)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.os.Handler.dispatchMessage(Handler.java:92)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.os.Looper.loop(Looper.java:175)
06-09 19:44:31.375: E/AndroidRuntime(956): at android.app.ActivityThread.main(ActivityThread.java:5279)
06-09 19:44:31.375: E/AndroidRuntime(956): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 19:44:31.375: E/AndroidRuntime(956): at java.lang.reflect.Method.invoke(Method.java:511)
06-09 19:44:31.375: E/AndroidRuntime(956): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
06-09 19:44:31.375: E/AndroidRuntime(956): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
06-09 19:44:31.375: E/AndroidRuntime(956): at dalvik.system.NativeStart.main(Native Method)
MainActivity लाइन 121: FlashController fc = new FlashController(this);
आयात आपके ऐप को क्रैश नहीं करता है। अपना लॉगकैट शामिल करें। – ianhanniballake
'आयात' कथन निष्पादन योग्य बयान नहीं हैं और सीधे क्रैश का कारण नहीं बन सकते हैं। अपने क्रैश से जुड़े जावा स्टैक ट्रेस की जांच करने के लिए लॉगकैट का उपयोग करें: https://stackoverflow.com/questions/23353173/unfortun-myapp-has-stopped-how-can-i-solve- यह अगर आपको स्टैक ट्रेस समझ में नहीं आता है , इसे अपने प्रश्न में पेस्ट करें और इंगित करें कि आपके कोड स्निपेट से कोड की कौन सी रेखाएं स्टैक ट्रेस में संदर्भित रेखाओं से मेल खाते हैं। – CommonsWare
@ianhanniballake लॉगकैट जोड़ा गया। – Araw