SOLVEDlecture du dossier DCIM de l'appareil photo ne fonctionne pas
j'utilisais un octet pour un type de retour int et casting aussi dans le mauvais moment, voir ma réponse.
question originale
Est-il permis de lire les fichiers dans le dossier DCIM/caméra? J'ai essayé de lire et écrire dans beaucoup d'endroits dans le stockage externe et cela fonctionne, excepté lire les images prises de ce dossier (j'ai pu écrire).
Peut-être que c'est un problème avec mon installation d'eclipse ne compilant pas la dernière version des sources, mais je suis comme fou en ce moment en essayant de comprendre. J'ai essayé de supprimer et d'ajouter à nouveau les autorisations WRITE_EXTERNAL_STORAGE et READ_EXTERNAL_STORAGE sans succès. Peut être son supposé être fait avec un autre moyen d'accès je ne sais pas parce que je n'ai jamais essayé de lire ces images.
L'image que j'essaie de lire fait exactement 7900 octets de long pris avec la caméra virtuelle de genymotion. Quand je le lis, je n'ai que 4 octets ou 0 (atteindre la fin du fichier), mais pas une seule exception ou erreur sur logcat.
Ce code passe bien dans une suite de test pour tout endroit, sauf les images dans DCIM/caméra
public void testReadCamera() throws IOException {
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
FileInputStream is = new FileInputStream(new File(dir, "Camera/IMG_20140623_125853.jpg"));
ArrayList<Byte> bytes = new ArrayList<Byte>();
byte b = 0;
while((b = (byte) is.read()) != -1) {
bytes.add(b);
}
byte[] data = new byte[bytes.size()];
for(int i = 0; i < bytes.size(); i++){
data[i] = bytes.get(i);
}
assertEquals(7900, data.length);
}
Manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.adyrsoft.pictures.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.adyrsoft.pictures" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Qu'est-ce que je fais mal?