2016-02-07 15 views
15

1- qualche collega (che è uno sviluppatore Android utilizzando Android Studio) si trova ad affrontare un problema quando si prova la sua applicazione sul mio cellulare (che è un nexus 5 con Android 6.0.1), il problema che sta affrontando è che quando prende un'immagine da una galleria funziona con lui ok, ma quando si scatta una foto dalla fotocamera non ne visualizza, sospetta che l'immagine che sta salvando al telefono non vengono salvati, sospetta che sia un problema di autorizzazione, per lui funziona su galassia ma non su nexus.in Android 6.0.1, il recupero della macchina fotografica non funziona

2- la stessa cosa accade con me in unità ho comprato un plugin che consente di funzionare bene in passato sul mio telefono (quando prendo una macchina fotografica) e ora, dopo che ho aggiornato non è più Prendendo l'immagine, intendo che vado alla videocamera e torno all'applicazione senza aver caricato nulla nella vista come prima.

questo è ciò che logcat mostra

--------- beginning of main 
02-07 16:36:10.272  203-813/? D/audio_hw_primary﹕ out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2 
02-07 16:36:10.282  203-813/? D/audio_hw_primary﹕ select_devices: out_snd_device(2: speaker) in_snd_device(0: none) 
02-07 16:36:10.282  203-813/? D/msm8974_platform﹕ platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15) 
02-07 16:36:10.282  203-813/? D/audio_hw_primary﹕ enable_snd_device: snd_device(2: speaker) 
02-07 16:36:10.284  203-813/? D/audio_hw_primary﹕ enable_audio_route: apply and update mixer path: low-latency-playback 
02-07 16:36:10.289 24484-24484/? W/CAM_ActivityCloser﹕ WARNING: Activity was artificially finished: CameraActivityController was closed. 
02-07 16:36:10.302 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ START onPause: Activity = [email protected]e256d 
02-07 16:36:10.303 24484-27584/? W/CAM2PORT_AndCamAgntImp﹕ Releasing camera without any camera opened. 
02-07 16:36:10.305 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ END onPause: Activity = [email protected]e256d 
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ onActivityResult 
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ RESULT_OK 
02-07 16:36:10.329 25275-25275/? I/Unity﹕ **[CameraDemo] onCaptureImageFail** 

Perché questo accade? E come risolverlo?

+0

eh? è generato Unity3D? – Fattie

+0

questo problema è incredibilmente difficile: http://stackoverflow.com/a/7411824/294884 http://stackoverflow.com/a/22282988/294884 http://stackoverflow.com/a/17922913/294884 – Fattie

+0

Vedere http: //developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE: * se l'app ha come target M e versioni successive e dichiara di utilizzare l'autorizzazione CAMERA che non è concessa, allora il tentativo di utilizzare questa azione provocherà un SecurityException.* –

risposta

1

la soluzione era chiedere il permesso in un avviso, non solo concedere l'autorizzazione in manifest.

+0

Puoi chiarire cosa intendi qui? Ricevo questo messaggio di errore quando lancio l'intento ACTION_IMAGE_CAPTURE, che afaict non richiede alcuna autorizzazione (poiché l'app non è quella che sta effettivamente parlando alla telecamera) – Eric

1

Non so molto sull'unità e perdonatemi se questo non aiuta. In generale, in modo che tutto funzioni correttamente per quanto riguarda utilizzando l'hardware della fotocamera e memorizzare l'immagine in Android nativa, il file AndroidManifest.xml dovrebbe includere i seguenti all'interno del tag applicazione:

<uses-feature android:name="android.hardware.camera" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

di modificare il file manifesto dall'unità, ecco una guida che ho trovato: https://matthewongamedesign.wordpress.com/2013/06/08/unity-and-the-android-manifest-file/

+0

questo non ha aiutato, lo stesso. Le autorizzazioni manifest di – DeyaEldeen

+0

non funzioneranno su api lvl 23+ – dgngulcan

0

Sembra un problema di controllo dell'autorizzazione di runtime. Android ha introdotto il controllo dell'autorizzazione di runtime dall'API 23 (marshmallow) in poi.

http://developer.android.com/training/permissions/requesting.html

Spero che questo sia utile.

+0

sì, ho già scritto la risposta, un'ora fa sotto e l'ho accettato, grazie a gaurav4sarma. – DeyaEldeen

+1

Mi dispiace ma ho pensato che sarebbe stato utile per tutti i futuri visitatori perché la tua risposta non menziona mai il controllo dell'autorizzazione di runtime, quindi il link. Comunque, non importa, spero che qualcuno da qualche parte trovi utile, Saluti –

0

hai fornito il permesso per accedere alla galleria? Si prega di inviare il vostro codice ..

+0

l'uno gaurav4sarma pubblicato: http://developer.android.com/training/permissions/requesting.html – DeyaEldeen

2

Bisogna chiedere il permesso in attività

nella funzione:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (!Settings.System.canWrite(this)) { 
      requestPermissions(new String[]{Manifest.permission.CAMERA, 
        Manifest.permission.CAMERA}, REQUEST_CAMERA); 
     } else { 
      takeFromCamera(); 
     } 
    } else { 
     takeFromCamera(); 
    } 

e aggiungere questo nella vostra attività

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    if (requestCode == REQUEST_CAMERA) { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       takeFromCamera(); 
      } else { 
       Log.e("Permission", "Denied"); 
      } 
    } 
} 

in palese:

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="true" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
Problemi correlati