Android - 高 phone 资源使用率导致单头音量低 phone?
Android - High phone resource usage causing low volume on one headphone?
我在 Android 上使用 libpd(纯数据)来制作一个可用作低预算助听器的应用程序。 "audio engine" 我最初的设计有 7 个滤波器,两个耳机的音量相同。我将设计更改为具有 14 个滤波器,现在右边的耳机音量变小了。
运行 我笔记本电脑上的引擎在双耳上产生的音量相同。我尝试了 运行 在它自己的线程上进行所有音频处理,但我不确定我是否正确执行了此操作。
所以把问题归结起来。
- 单耳音量低是否可能是使用过多资源的副作用?
我创建新线程的实现是否正确?
public class CircleOfFifths extends Activity {
private static final String TAG = "GuitarTuner";
private PdUiDispatcher dispatcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initGui();
new Thread(new Runnable() {
public void run(){
try {
initPd();
loadPatch();
} catch (IOException e) {
Log.e(TAG, e.toString());
finish();
} }
}).start();
}
private void initGui() {
setContentView(R.layout.main);
}
private void initPd() throws IOException {
// Configure the audio glue
// int sampleRate = AudioParameters.suggestSampleRate();
int sampleRate = AudioParameters.suggestSampleRate();
int inpch = AudioParameters.suggestInputChannels();
int outch = AudioParameters.suggestOutputChannels();
PdAudio.initAudio(sampleRate, inpch, outch, 4, true);
// Create and install the dispatcher dispatcher = new PdUiDispatcher();
// PdBase.setReceiver(dispatcher);
}
private void loadPatch() throws IOException {
File dir = getFilesDir();
IoUtils.extractZipResource(getResources().openRawResource(R.raw.patch),
dir, true);
File patchFile = new File(dir, "microphone.pd");
PdBase.openPatch(patchFile.getAbsolutePath());
PdAudio.startAudio(this);
}
@Override
protected void onResume() {
super.onResume();
PdAudio.startAudio(this);
}
@Override
protected void onPause() {
super.onPause();
PdAudio.stopAudio();
}
}
使用过多 CPU 根本不会影响音量。您的某个过滤器似乎更有可能导致该频道的增益小于 1。
我觉得你的帖子不错。我不是 100% 确定在非 UI 线程上调用 finish 是合法的,但如果不是,您可以在那里添加一个 runOnUiThread
我在 Android 上使用 libpd(纯数据)来制作一个可用作低预算助听器的应用程序。 "audio engine" 我最初的设计有 7 个滤波器,两个耳机的音量相同。我将设计更改为具有 14 个滤波器,现在右边的耳机音量变小了。
运行 我笔记本电脑上的引擎在双耳上产生的音量相同。我尝试了 运行 在它自己的线程上进行所有音频处理,但我不确定我是否正确执行了此操作。
所以把问题归结起来。
- 单耳音量低是否可能是使用过多资源的副作用?
我创建新线程的实现是否正确?
public class CircleOfFifths extends Activity { private static final String TAG = "GuitarTuner"; private PdUiDispatcher dispatcher; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initGui(); new Thread(new Runnable() { public void run(){ try { initPd(); loadPatch(); } catch (IOException e) { Log.e(TAG, e.toString()); finish(); } } }).start(); } private void initGui() { setContentView(R.layout.main); } private void initPd() throws IOException { // Configure the audio glue // int sampleRate = AudioParameters.suggestSampleRate(); int sampleRate = AudioParameters.suggestSampleRate(); int inpch = AudioParameters.suggestInputChannels(); int outch = AudioParameters.suggestOutputChannels(); PdAudio.initAudio(sampleRate, inpch, outch, 4, true); // Create and install the dispatcher dispatcher = new PdUiDispatcher(); // PdBase.setReceiver(dispatcher); } private void loadPatch() throws IOException { File dir = getFilesDir(); IoUtils.extractZipResource(getResources().openRawResource(R.raw.patch), dir, true); File patchFile = new File(dir, "microphone.pd"); PdBase.openPatch(patchFile.getAbsolutePath()); PdAudio.startAudio(this); } @Override protected void onResume() { super.onResume(); PdAudio.startAudio(this); } @Override protected void onPause() { super.onPause(); PdAudio.stopAudio(); } }
使用过多 CPU 根本不会影响音量。您的某个过滤器似乎更有可能导致该频道的增益小于 1。
我觉得你的帖子不错。我不是 100% 确定在非 UI 线程上调用 finish 是合法的,但如果不是,您可以在那里添加一个 runOnUiThread