2015-03-31 57 views
0

我在Android上使用libpd(纯数据)来制作可用作低预算助听器的应用程序。我原创的“音频引擎”设计有7个滤镜,两个耳机的音量都相同。我改变了设计有14个过滤器,现在右耳机的音量很低。Android - 手机资源使用率过高导致耳机音量不足?

在我的笔记本电脑上运行引擎在双耳上产生相同的音量。我尝试在它自己的线程上运行所有音频处理,但我不确定是否正确执行了此操作。

所以要解决这个问题。

  1. 一只耳朵体积不足,使用过多的资源可能产生副作用?
  2. 我的创建新线程的实现是否正确?

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

回答

1

使用过多的CPU应该不会影响音量的。看起来你的某个过滤器在该频道上的增益可能小于1。

你的帖子对我来说很不错。我不是100%确定在非UI线程上调用完成是合法的,但如果不是,您可以添加runOnUiThread那里