2013-10-11 1 views
1

Мое приложение записывает файл с именем filename.dat в папке/SDCARD
я могу удалить этот файл с ADB в таблетке, используя команду adb shell rm /sdcard/filename.dat
Я использую этот планшет только для разработки и ничего больше, поэтому у меня на нем установлено очень мало приложений, и это также относится к вещам, которые мне нужно разработать, например, файловым исследователем
Я пробовал то же самое в телефоне LG Optimus LTE, который активно используется, и поэтому есть много других установленных приложений, включая те, которые необходимы для повседневной работы человека.
Когда я пытаюсь выполнить ту же команду,
adb shell rm /sdcard/filename.dat
в телефоне LG, он отказывается сделать это
rm failed for /sdcard/filename.dat, Permission denied
Почему ведет этот путь?различное поведение приложения в Nexus 7 и LG Optimus LTE

Что еще более важно, в программе, которую я тестирую, она работает нормально все время в Nexus 7, но когда я пытаюсь запустить ее по телефону, она работает нормально в первый раз, но когда я это делаю, второй раз одна из переменных в программе начинает получать значения NaN (я отследил ее из-за деления Infinity/Infinity, имеющего место на одной из строк), то каждый раз, когда я выполняю его снова, он показывает эти значения NaN , Программа слишком длинная для устранения неполадок для кого-то, незнакомого с ней, я думаю, но она использует классы AudioTrack и AudioRecord для ввода звука, выполнения некоторых операций FFT и DSP на нем, а затем воспроизведения.

Что мне действительно нужно знать, Что это такое, что отличается от планшета и телефона, что может вызвать такую ​​проблему, и какие другие вещи мне могут потребоваться?

Я инициализировать AudioRecord и аудиодорожки в

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); 

Я думаю, что это может иметь отношение к этой конкретной программе, так как использовать что-то другое, чем MODE_IN_COMMUNICATION, такие как MODE_VOICE_CALL, кажется, компилироваться, но дает аналогичные проблемы, даже в Nexus 7.

+0

Какова реальная трасса SD-карты на LG Optimus LTE? '/ sdcard /' является устаревшим путем и устарел. Некоторые устройства, такие как N7, обеспечивают обратную совместимость и имеют ссылку на '/ sdcard /', указывающую на фактический путь к SD-карте. Похоже, что обратная совместимость в LG Optimus LTE не реализована. – ozbek

+0

Как я могу узнать реальный путь LG Optimus для sdcard? Перейдем к 'adb shell', после чего команда' cd sdcard' также просто говорит 'permission denied'. – user13267

+0

Можете ли вы попробовать 'adb shell df' и опубликовать вывод на вопрос, пожалуйста? – ozbek

ответ

0

Вы можете попробовать System.getenv("EXTERNAL_STORAGE"), чтобы получить внешний каталог хранения, а не использовать /sdcard/. По моему опыту в большинстве случаев это было одинаково. Но это должно давать вам правильный выходной каталог каждый раз.