2

エラーが発生しました:

public class VisualizerCapture extends Activity implements Visualizer.OnDataCaptureListener {
private Visualizer mVisualizer = new Visualizer(0); // error is here!!!

@Override
public void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);

    setupVisualizer();
}

これはスローされたエラーです:

  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{bla bla}: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4

私のマニフェスト:

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>    
    <uses-permission android:name="android.permission.INTERNET"/>         

設定方法:

private void setupVisualizer() {
    Visualizer.setEnabled(false);
    Visualizer.setCaptureSize(1);      //test
    Visualizer.setDataCaptureListener(this,250,false,true);
    //Visualizer.setScalingMode(visualizer.SCALING_MODE_AS_PLAYED);
    Visualizer.setEnabled(true);
            Log.v("ABS","setupVisualizer" + Visualizer.getEnabled());    //log

}

なぜこのエラーが発生したのですか?私はすべての許可を取得したようですか?

しばらくお待ちください。私は開発の初心者です。どうすればこれを修正できますか?

4

3 に答える 3

1

ドキュメントを読んだ後:

public Visualizer (int audioSession)

Added in API level 9
Class constructor.

Parameters
audioSession    system wide unique audio session identifier. If audioSession is not 0, the visualizer will be attached to the MediaPlayer or AudioTrack in the same audio session. Otherwise, the Visualizer will apply to the output mix.

本当に0が欲しいですか?

アップデート

エラーをさらに詳しく調べます。

public static final int ERROR_BAD_VALUE

Added in API level 9
Operation failed due to bad parameter value.

Constant Value: -4 (0xfffffffc)

これは、発生しているエラーです。ビジュアライザーの構成に問題がある可能性があります。setupVisualizerメソッドの内容を再確認してください。

于 2013-01-30T07:24:52.337 に答える
0

Visualizerをすべてのプラットフォームで実行できるわけではありません。これはAndroidで最もテストされていないオブジェクトの1つであり、imhoでリリースされるべきではありませんでした。どこに触れても例外をキャッチする必要があります。

ビジュアライザーは、これまでに使用する中で最も複雑で文書化されていないクラスの1つである可能性があります。それは難解なエラー処理と組み合わされたDSPとFFTの奇妙さを持っています。

例えば。また、ビジュアライザーを使用するときは、ボリュームコントロールをバイパスするために、常にイコライザーをインスタンス化する必要があります。

クラスの宣言セクションでオブジェクトの依存関係をインスタンス化しないでください。これにより、例外をキャッチすることが困難になり、依存性注入も困難になります。

クラスのコンストラクターまたはinitメソッドでオブジェクトをインスタンス化して、例外をキャッチし、依存性注入のモックのテストをサポートできるようにする必要があります。

于 2015-04-05T20:54:17.807 に答える
0

マニフェストファイルに権限を追加する

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

追加された場合は、確認してください。

このアプリのAppInfoに移動します。権限に移動します。このアプリが要求したすべての権限が付与されていることを確認してください。

于 2017-04-19T03:32:17.550 に答える