2017-08-08 1 views
-1

J'ai eu le plantage ci-dessus avec l'émulateur dans Android Studio sur 6.0, mais pas de plantage sur mon appareil avec 6.0.1. L'émulateur lance parfois l'appareil photo mais il se bloque pour la plupart avec rien dans logcat pour me diriger dans la bonne direction. Quelqu'un at-il des indices sur ce qui pourrait se passer ici?malheureusement, la caméra a arrêté l'erreur android 6.0.0

En outre, voici une image du moment où elle passe effectivement. Image_capture_camera

private File createImageFile() throws IOException 
{ 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss").format(new Date()); 
    String imageFileName = "" + timeStamp; 
    File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    Name = imageFileName; 
    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = image.getAbsolutePath(); 
    return image; 
} 

private void dispatchTakePictureIntent() 
{ 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    // Ensure that there's a camera activity to handle the intent 
    if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) 
    { 
     // Create the File where the photo should go 
     File photoFile = null; 
     try 
     { 
      photoFile = createImageFile(); 
     } 
     catch (IOException ex) 
     { 
      // Error occurred while creating the File 
     } 
     // Continue only if the File was successfully created 
     if (photoFile != null) 
     { 
      photoURI = FileProvider.getUriForFile(getActivity(), 
        "com.full.jusuf.snaphealth.fileprovider", 
        photoFile); 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    } 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) 
    { 

     final Uri uri = photoURI; 
     uri_data.add(new Timeline_Model(uri.toString(), Name)); 

     //save data to firebase 
     FirebaseStorage storage = FirebaseStorage.getInstance(); 
     StorageReference storageRef = storage.getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); 
     storageRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(Name).putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) 
      { 
       String uri1 = taskSnapshot.getDownloadUrl().toString(); 
       FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
       DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); 
       if (user != null) 
       { 
        long Count = System.currentTimeMillis(); 
        databaseReference.child("users").child(user.getUid()).child("image_uri").child("image" + Count).setValue(new Timeline_Model(uri1, Name)); 
       } 
      } 
     }); 

     PopulateGallery(); 
    } 
} 

Logcat:

08-08 02:22:26.576 17275-17330/com.full.jusuf.snaphealth V/FA: Recording user engagement, ms: 10526 
08-08 02:22:26.576 17275-17330/com.full.jusuf.snaphealth V/FA: Using measurement service 
08-08 02:22:26.576 17275-17330/com.full.jusuf.snaphealth V/FA: Connecting to remote service 
08-08 02:22:26.580 17275-17330/com.full.jusuf.snaphealth D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=10526, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=4121746325476785971}] 
08-08 02:22:26.593 17275-17330/com.full.jusuf.snaphealth V/FA: Using measurement service 
08-08 02:22:26.593 17275-17330/com.full.jusuf.snaphealth V/FA: Connection attempt already in progress 
08-08 02:22:26.593 17275-17330/com.full.jusuf.snaphealth V/FA: Activity paused, time: 917202 
08-08 02:22:26.611 17275-17330/com.full.jusuf.snaphealth D/FA: Connected to remote service 
08-08 02:22:26.611 17275-17330/com.full.jusuf.snaphealth V/FA: Processing queued up service tasks: 2 
08-08 02:22:26.678 17275-17357/com.full.jusuf.snaphealth D/EGL_emulation: eglMakeCurrent: 0x7f9ce78225e0: ver 3 1 (tinfo 0x7f9cdb3c2d40) 
08-08 02:22:26.679 17275-17357/com.full.jusuf.snaphealth E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7f9cdb6c53e0 
+0

Vous devez ajouter autorisations d'exécution pour la caméra pendant que votre application s'exécute sur 6.0. –

Répondre

0

Comme vous le savez probablement, Android 23 a changé entièrement la politique d'autorisation, donc si vous ciblez 23+ (ou plus tard, que vous faites probablement), il est probable que votre problème ici est

File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
File image = File.createTempFile(
     imageFileName, /* prefix */ 
     ".jpg",   /* suffix */ 
     storageDir  /* directory */ 
); 

ou ici

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

(lire: Android M Camera Intent + permission bug?)

Assurez-vous que vous avez

< uses-permission android:name="android.permission.CAMERA" /> 

< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

dans votre manifeste, puis allez dans Paramètres -> Applications -> YourApp -> autorisations et assurez-vous de stockage et de l'appareil photo sont vérifiés . Si votre panne ne se reproduit plus avec les autorisations définies manuellement, continuez à lire https://developer.android.com/training/permissions/requesting.html et ajoutez des demandes d'autorisation d'exécution à toutes les fonctionnalités utilisées par votre application.

+0

Merci pour la réponse, mais cela n'a pas fonctionné. La définition manuelle des autorisations a fait la même chose. Curieusement, lancer l'application de caméra sur le simulateur fonctionne mais montre les mêmes problèmes graphiques que l'image que j'ai liée ci-dessus. – jusuf

+0

peut être un problème matériel, puis créer un autre émulateur avec des paramètres différents au hasard et définir la caméra à émuler au lieu de webcamN vous avez probablement maintenant et réessayez. – Nick

+0

Je reçois le même problème sur le nouvel émulateur avec une caméra émulée. – jusuf

0

J'ai eu du mal avec cela depuis longtemps, et vu que de l'API Android 23 et jusqu'à vous devez demander des autorisations d'exécution, lisez Runtime Permissions dans la documentation Android et devrait résoudre votre problème

+0

Pas de chance avec cela non plus, Il fonctionne bien sur tous les appareils testés sauf un Nexus 5 6.0.1 et le simulateur sur 6.0 api 23. J'ai testé sur le matériel, y compris un S8 et note 5 en cours d'exécution 6.0.1 et 7.0 et n'ont pas de problèmes. Cependant, je n'arrive pas à trouver la cause. – jusuf