2013-10-11 1 views
1

Mon application écrit un fichier appelé filename.dat dans le dossier/sdcard
Je peux supprimer ce fichier à partir adb dans la tablette, en utilisant la commande adb shell rm /sdcard/filename.dat
J'utilise cette tablette seulement pour le développement et rien d'autre, donc j'ai très peu d'applications installées dessus, et celles-ci sont aussi spécifiques aux choses que j'ai besoin de développer, comme l'explorateur de fichiers
J'ai essayé la même chose sur le LG Optimus LTE utilisé, et a beaucoup d'autres applications installées, y compris ceux nécessaires pour le travail quotidien de la personne
Lorsque j'essaie la même commande,
adb shell rm /sdcard/filename.dat
dans le téléphone LG, il refuse de le faire
rm failed for /sdcard/filename.dat, Permission denied
Pourquoi est-il se comporter de cette façon? Plus important encore, dans le programme que je suis en train de tester, ça marche tout le temps dans le Nexus 7, mais quand j'essaie de le faire fonctionner au téléphone, ça marche bien la première fois, mais quand je le fais, le la deuxième fois, une des variables du programme commence à recevoir des valeurs NaN (je l'ai détecté comme étant dû à une division Infinity/Infinity sur une des lignes), puis chaque fois que je l'exécute à nouveau, elle montre ces valeurs NaN . Le programme est trop long pour dépanner quelqu'un qui ne le connaît pas, mais il utilise les classes AudioTrack et AudioRecord pour prendre le son, effectuer des opérations FFT et DSP, puis le lire. Ce que j'ai vraiment besoin de savoir, c'est qu'est-ce qui est différent entre une tablette et un téléphone, qui pourrait causer un problème comme celui-ci, et quelles sont les autres choses que je devrais considérer?comportement différent de l'application dans Nexus 7 et LG Optimus LTE

J'initialize la audiorecord et AudioTrack comme

int min = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); 
record = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, min); 
int maxJitter = AudioTrack.getMinBufferSize(SAMPLE_FREQUENCY, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); 
track = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, maxJitter, AudioTrack.MODE_STREAM); 

Je pense que cela pourrait être utile à ce programme particulier, puisque l'utilisation autre chose que MODE_IN_COMMUNICATION, comme MODE_VOICE_CALL, semble compiler bien, mais donne des problèmes similaires, même dans le Nexus 7.

+0

Quel est le chemin réel de la carte SD sur le LG Optimus LTE? '/ sdcard /' est un chemin hérité et est obsolète. Certains périphériques tels que N7 offrent une compatibilité ascendante et un lien vers '/ sdcard /' pointe vers le chemin réel de la carte SD. Il semble que cette rétrocompatibilité ne soit pas implémentée dans LG Optimus LTE. – ozbek

+0

Comment puis-je connaître le chemin réel de LG Optimus pour la carte SD? Aller à 'adb shell' puis donner la commande' cd sdcard' dit aussi 'permission denied'. – user13267

+0

Pouvez-vous essayer 'adb shell df' et envoyer la sortie au corps de la question, s'il vous plaît? – ozbek

Répondre

0

Vous pouvez essayer System.getenv("EXTERNAL_STORAGE") pour obtenir le répertoire de stockage externe au lieu d'utiliser /sdcard/. Dans mes expériences, c'était la même chose dans la plupart des cas. Mais cela devrait vous donner un bon répertoire de sortie à chaque fois.

Questions connexes