2012-04-23 13 views
0

Alert.startAudio()をヘッドセットではなくブラックベリーデバイスのスピーカーで再生する必要があります。電話のスピーカーからAlert.startAudio()を再生するにはどうすればよいですか?

私はAudioPathControlインターフェイスを介してオーディオパスを変更できることを知っていますが、AudioPathControlのインスタンスを取得する方法はわかりません。

Blackberryのナレッジベースでは、どのように行うのかについてはLINKが見つかりましたが、プレイヤークラスを使用して行う方法はわかりません。現在のアプリケーションのAudioPathControlのインスタンスを取得する方法はありますか?

自分のサウンドファイルを組み込む代わりに、プログラムでトーンを再生することをお勧めします。私はそれのために次のコードスニペットを見つけました。

Player p = javax.microedition.media.Manager.createPlayer(javax.microedition.media.Manager.TONE_DEVICE_LOCATOR); 
p.realize(); 
ToneControl tc = (ToneControl) p.getControl("ToneControl"); 
AudioPathControl apc = (AudioPathControl) p 
.getControl("AudioPathControl"); 
apc.setAudioPath(AudioPathControl.AUDIO_PATH_HANDSFREE); 
tc.setSequence(mySequence); 
p.start(); 

しかし、問題はapcnullあるとExceptionを投げるということです。どんな解決策ですか?

答えて

0

Where Does the Sound Go?(Googleブックスからのプレビュー)のを参照してください。高度なBlackBerry 6開発者Chris King

+0

これは問題ありません。私はすでにそれを行う方法を知っています。事は、私はスペースを節約するために私自身の音楽ファイルを含まないことを好みます。私は代わりにプログラムで音色を演奏する方が好きです。私は見つけたがまだ動作していない別のテクニックで質問を更新しました。 –

+0

更新されたコードでは、http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/1089414/How_To_-_Specify_Audio_Path_Routing.html?nodeid=1326675&vernum=0で使用されているスニペットをマージすることができます。つまり、返されたすべてのコントロールを繰り返し処理し、その型をチェックします。コントロールがサポートされていない場合は、長さ0の配列が返されます(API docから)。 – Rupak

+0

私はそれを試しました。動いていない。それでもなおnullが返ってきます。 –

関連する問題