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 で常に正常に動作しますが、電話で実行しようとすると、最初は正常に動作しますが、2 回目に実行すると、プログラム内の変数の一部が NaN 値を取得し始めます (行の 1 つで行われる無限/無限除算が原因であると追跡しました)。その後、再度実行するたびに、これらの NaN 値が表示されます。このプログラムは、慣れていない人にとってはトラブルシューティングを行うには長すぎると思いますが、AudioTrack および AudioRecord クラスを使用してサウンド入力を取得し、FFT および DSP 操作を実行してから再生します。
私が本当に知る必要があるのは、タブレットと携帯電話の違いは何か、このような問題を引き起こしている可能性があること、そして他に考慮すべき点は何ですか?
AudioRecord と AudioTrack を次のように初期化します。
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_VOICE_CALL などの MODE_IN_COMMUNICATION 以外のものを使用すると、正常にコンパイルされるように見えますが、Nexus 7 でも同様の問題が発生するため、これはこの特定のプログラムに関連している可能性があると思います。