Nexus 7和LG Optimus LTE中应用程序的不同行为

时间:2013-10-11 05:10:47

标签: android behavior

我的应用在/ sdcard文件夹中写了一个名为filename.dat的文件 我可以使用该命令从平板电脑中的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中一直运行良好,但是当我尝试在手机上运行它时,它第一次工作正常,但是当我这样做时第二次时间,程序中的一个变量开始得到NaN值(我已经跟踪它是由于在其中一条线上发生了无穷大/无限分裂),然后每次我再次执行它时,它会显示这些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_IN_COMMUNICATION以外的东西,例如MODE_VOICE_CALL,似乎编译得很好但是也会出现类似问题,即使在Nexus 7中也是如此。

1 个答案:

答案 0 :(得分:0)

您可以尝试System.getenv("EXTERNAL_STORAGE")获取外部存储目录,而不是使用/sdcard/。根据我的经验,在大多数情况下这是相同的。但是每次都应该给你一个正确的输出目录。