1

Bluetooth からのデータを処理して Web サービスに送信するアプリケーションがあります。最近、アプリケーションにサウンドを追加したいというリクエストがありました。アプリケーションがデータのバッチを処理し、数秒後にプレーヤーが絶えず再生されると、「アプリケーションが応答していません」という例外が発生します。そして、プロセスは終了します。ログには、この例外の後に多くの ForcedStackTrace 例外が記録されていることがわかります。

サウンドは別のスレッドで再生されます。アプリがサウンドを再生しない、または短いサウンドを再生する場合 - すべて正常に動作します。この例外の発生を回避する方法はありますか? なぜそれが起こっているのですか?

InputStream mediaStream = null;
try {
    mediaStream = getClass().getResourceAsStream(relativePath);
    getLogger().log("setting player _ " + _audioType);
    setPlayer(Manager.createPlayer(mediaStream, _audioType));
    _currentPlayer.addPlayerListener(this);
    _currentPlayer.setLoopCount(1);
    _currentPlayer.realize();
    VolumeControl vc = (VolumeControl) _currentPlayer
            .getControl("VolumeControl");
    if (vc != null) {
        vc.setLevel(_voumeLevel);
    }
    _currentPlayer.prefetch();
    _currentPlayer.start();
} catch (Exception e) {
}

(BBフォーラムからクロスポスト)

4

1 に答える 1

2

独自のPlayerManagerを実装することで解決しました。これは、別のスレッドで実行すると、内部のPlayer実装を使用して多くのスレッドを使用するのではなく、キュー方式でアイテムを再生します。

于 2009-09-23T08:52:44.093 に答える