Eski android sürümleri için eski kamera API'sini ve API 23 ve üstü için yeni camera2/torch API'sini kullanan bir uygulama yazıyorum. Temel olarak aygıtın yeterince yeni bir Android sürümü çalıştırıyorsa bir kez belirledikten sonra uygulamaya göre uygulama arasında geçiş yapıyorum. Gingerbread üzerinde ben yakın bir kuvvet olsun çalıştıran üzerineEski ve daha yeni Android sürümleri için farklı API'ları nasıl işleyebilirim?
private static final int SDK_VERSION = Build.VERSION.SDK_INT;
private boolean isSdkVersionGreaterThanOrEqualTo(final int sdk) {
return SDK_VERSION >= sdk;
}
if (marshmallowOrNewer) { //isSdkVersionGreaterThanOrEqualTo(23);
try {
cameraManager.setTorchMode(cameraManager.getCameraIdList()[0], true);
} catch (final CameraAccessException e) {
e.printStackTrace();
}
} else {
cameraParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(cameraParameters);
camera.startPreview();
}
: Bu aşağı kaynar ÖLÜMCÜL EXCEPTION:
toggleButton.setOnClickListener(new View.OnClickListener() {
OnClickListener açılıyor: java.lang.VerifyError ana bu satırda Yukarıdaki kodu içeren ve bir API yönteminin bu Android sürümünde desteklenmediğini belirtir, bu da mantıklıdır, ancak aslında burada arama yapıyorum. Bu durumu nasıl düzgün kullanmalıyım, farklı Android sürümleri için farklı API'ler uyguluyorum veya bu doğrulamayı nasıl atlatabilirim?
stacktrace:
Uygulamama Camera2 işlevselliği eklerken bu sorunla karşılaştı04-02 13:42:54.413 3815-3815/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.VerifyError: t.t.t.MainActivity$1
at t.t.t.MainActivity.onCreate(MainActivity.java:61)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
at android.app.ActivityThread.access$1500(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Lütfen yığın izlemeyi gönderin. – CommonsWare
stacktrace'i ekledi. –
Sorununuz bir yöntemi çağırmıyor.AFAIK, bazı arayüz veya 't.t.t.MainActivity $ 1' sınıfının üstündedir. * Emin * bu 't.t.t.MainActivity $ 1'' View.OnClickListener() 'dir? Çevrede başka isimsiz iç sınıflarınız var mı? 'View.OnClickListener', API Seviye 1'den beri etrafta dolaşıyor, bu nedenle 'VerifyError' kaynağının kaynağı görünmüyor. – CommonsWare