我实现了与this类似的代码。我在日志中发出了噪音警报,但无论外面发生什么样的噪音,它总是会32639
或-32640
。
short[] buffer = new short[minSize];
boolean thresholdMet = false;
int threshold = sliderThreshold.getProgress();
ar.read(buffer, 0, minSize);
//Iterate through each chunk of amplitude data
//Check if amplitude is greater than threshold
for (short s : buffer) {
if (Math.abs(s) > threshold) {
thresholdMet = true;
Log.w("NoiseThreshold", String.valueOf(s));
break;
}
}
我在三部手机上测试过它们(没有一部是根):
它适用于S3,但不适用于其他。我尝试在HTC上使用传感器感应,它不适用于麦克风传感器。但是,它曾经工作过,现在似乎在图表视图中每五秒左右检测一个样本。
奇怪的是,麦克风仍能正常用于在故障手机上拨打电话和录像。
答案 0 :(得分:2)
你说它适用于S3,它是API 19,而不适用于API> = 23的那些。因此,您可能会遇到API 23中引入的运行时权限问题。
新行为(对于使用静态权限模型的“旧应用程序”)是在未授予运行时权限的情况下返回虚拟数据。