led 플래시를 켤 수있는 Android 응용 프로그램을 개발했습니다. 대부분의 휴대 전화에서 정상적으로 작동하는 것으로 보이지만 Google Play에서 앱을 다운로드 할 수 있으므로 손전등에 충돌 보고서가 표시됩니다. Nexus 5에 대한 보고서도 있습니다. 전화가 같지만 문제는 전혀 없습니다. 또한플래시를 켤 때 일부 장치에서 충돌이 발생했습니다.
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:1650)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
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:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
그리고이 충돌 보고서 : 세드릭
이java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.setPreviewDisplay(android.view.SurfaceHolder)' on a null object reference
at android.view.SurfaceView.updateWindow(SurfaceView.java:572)
at android.view.SurfaceView.access$000(SurfaceView.java:86)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:175)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1867)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
사람이 사소한 단서가 있습니까 이러한 충돌 내가 무엇입니까 보고서입니다
private ImageButton mFlashButton;
private Parameters mParams;
private Camera mCamera;
private Thread t;
private ImageView ivRing;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.flashlight_fragment,
container, false);
ivRing = (ImageView) view.findViewById(R.id.ivRing);
// flash switch button
mFlashButton = (ImageButton) view.findViewById(R.id.flashlight_button);
// Switch button click event to toggle flash on/off
mFlashButton.setOnClickListener(mClickListener);
return view;
}
View.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
if (mLightOn) {
turnOffFlash();
} else {
turnOnFlash();
}
}
};
@Override
public void onStart() {
super.onStart();
SurfaceView preview = (SurfaceView) getView().findViewById(R.id.PREVIEW);
SurfaceHolder mHolder = preview.getHolder();
mHolder.addCallback(this);
}
@Override
public void onPause() {
super.onPause();
turnOffFlash(true);
}
// Turning On flash
private void turnOnFlash() {
if (!mLightOn) {
//if camera not found, break
if (mCamera == null || mParams == null) {
Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show();
} else {
mParams = mCamera.getParameters();
mParams.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(mParams);
mCamera.startPreview();
mLightOn = true;
}
}
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
// Turning Off flash
private void turnOffFlash() {
if (mLightOn) {
//if camera is null, break;
if (mCamera == null || mParams == null) {
Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show();
} else {
//strobo not running, just turn flash off
mParams = mCamera.getParameters();
mParams.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(mParams);
mCamera.stopPreview();
mLightOn = false;
}
getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.setPreviewCallback(null);
mCamera.release();
mCamera = null;
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (mCamera == null) {
//next line forced closed once, should look into this
try {
mCamera = Camera.open();
mParams = mCamera.getParameters();
} catch (Exception e) {
Toast.makeText(getActivity(), "Something went wrong, please restart flashlight", Toast.LENGTH_SHORT).show();
}
try {
mCamera.setPreviewDisplay(holder);
} catch (Exception e) {
mCamera.release();
mCamera = null;
Toast.makeText(getActivity(), "Something went wrong, please restart flashlight", Toast.LENGTH_SHORT).show();
}
}
}
}
: 이것은 내 코드입니다 이리? 이 사전에 ..
감사를 내 넥서스 5에 충돌이 또 다른 나를 혼란에 수행하지 않는다는 사실
답변 해 주셔서 감사합니다. 이미 확인해 보았습니다. 이 코드는 LED 플래시가있는 장치에만 해당됩니다. –