Samsung Galaxy S6 Rand 6.0.1 funktioniert gut, so vielleicht Android M ist nicht der Faktor hier.Android M - MediaRecorder Start fehlgeschlagen
Zunächst einmal, die Android 6.0 + Berechtigungen sind gegeben, so ist das nicht der Fall.
Hier ist sie:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
//нужно проверять пермишны
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_NETWORK_STATE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO,Manifest.permission.INTERNET,Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},
PERMISSIONS_REQUEST);
}
}
ich meine App auf anderen Geräten getestet haben und es funktioniert gut, aber auf Nexus 5 (Hammerhai) Ich habe einen Fehler bekam, als MediaRecorder.start() aufgerufen wird und ich weiß nicht viel, was ich damit machen soll.
Der Stacktrace ist so einfach wie:
java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method)
at com.vladdrummer.headsup.ScreenVideoRecorder.record(ScreenVideoRecorder.java:94)
Also, nicht zu viel Information. Hier ist der Code, aber im Kopf behalten, es auf anderen Geräten funktioniert
private Camera camera;
...
camera.setPreviewDisplay(holder);
camera.startPreview();
isPrepared = prepareVideoRecorder();
..
private boolean prepareVideoRecorder() {
try{
camera.unlock();
mediaRecorder = new MediaRecorder();
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH));
String path = A.getRawGameVideoPath();//4 debug purposes
mediaRecorder.setOutputFile(path);
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
}
catch (Exception e){
e.printStackTrace();
return false;
}
try {
mediaRecorder.prepare();
} catch (Exception e) {
e.printStackTrace();
release();
return false;
}
return true;
}
public void record(){
if (isPrepared){
mediaRecorder.start(); // Here where it crashes on Android M
}
}
Natürlich kann es auch auf anderen Geräten Absturz sein, Getestet habe ich es auf 3 Geräte nur
Es tut mir leid, das ist nicht der Fall, ich habe diese Berechtigungen in Runtime gegeben – user2976267