1

私のアプリケーションでは、通知を受け取ったときにサウンドを再生する必要があります。オーディオを再生するために、次のコードを実装しました。

private static final short BFlat = 466;   //466.16
private static final short AFlat = 415;     //415.30
private static final short A = 440; //440.00
private static final short GFlat = 370;     //369.99
private static final short DFlat = 554;     //554.37
private static final short C = 523; //523.25
private static final short F = 349; //349.32
// Duration of a 16th note, arbitrary, in ms.
private static final short TEMPO = 125;

// Duration of a 16th note, arbitrary, in ms.
private static final short d16 = 1 * TEMPO;

// Duration of an eighth note, arbitrary, in ms.
private static final short d8 = d16 << 1;
// 10 ms pause.
private static final short dpause = 10;

// Zero frequency pause.
private static final short pause = 0;

private static final short[] TUNE = new short[] {
             BFlat, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             A, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             GFlat, d16, pause, dpause,
             GFlat, d16, pause, dpause,
             A, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             DFlat, d16, pause, dpause,
             C, d16, pause, dpause, //bar 1
             AFlat, d16, pause, dpause,
             AFlat, d16, pause, dpause,
             AFlat, d16, pause, dpause,
             AFlat, d16, pause, dpause,
             F, d16, pause, dpause,
             GFlat, d16, pause, dpause,
             AFlat, d16, pause, dpause,
             BFlat, d16, pause, dpause,
             AFlat, d16, pause, dpause,
             F, d8 + d16 //bar 2
         };

public MyScreen()
{        
    // Set the displayed title of the screen       
    setTitle("MyTitle");
    // % volume
    final int VOLUME = 80;


    if ( Alert.isAudioSupported())
    {
         System.out.println("------alert is audio supported-------------"+ Alert.isAudioSupported());

         Alert.startAudio(TUNE, 100);
        //Alert.startVibrate(5000);
    }

Alert.startAudio()全く音が出ません。しかし、私は電話を振動させることができます。何かが欠けている場所や、startAudio で short の配列を使用する方法を教えてください。私に何かまたは任意のアイデアを提案してください。ありがとう

** * ** * EDIT * ** * ** * ** * ** ダイアログと通知を表示するには、次を使用しました。ダイアログ ボックスを表示し、バイブレーションと着信音を鳴らすことはできますが、着信音の音量が非常に小さく、電話を耳に近づけない限り、誰も聞こえません。

try{
                     Application.getApplication().invokeAndWait(new Runnable() {
                         public void run() 
                         {

                         }
                     });
                       final Dialog screen = new Dialog(Dialog.D_OK_CANCEL, " "+text,
                                Dialog.OK,
                                //mImageGreen.getBitmap(),
                                null, Manager.VERTICAL_SCROLL);
                        final UiEngine ui = Ui.getUiEngine();
                        Application.getApplication().invokeAndWait(new Runnable() {
                            public void run() {
                                NotificationsManager.triggerImmediateEvent(0x749cb23a76c66e2dL, 0, null, null);
                                ui.pushGlobalScreen(screen, 0, UiEngine.GLOBAL_QUEUE);
                            }
                        });
                        System.out.println("-----IN PUSH MESSAGE READER----"+screen.getSelectedValue());
                        if(screen.getSelectedValue()==1)
                        {
                            System.out.println("-----I1-"+screen.getSelectedValue());

                            ApplicationDescriptor[] appDescriptors =CodeModuleManager.getApplicationDescriptors(CodeModuleManager.getModuleHandle("BB_push"));
                          ApplicationDescriptor appDescriptor = new ApplicationDescriptor(appDescriptors[0], new String[] {"BB_push"});
                          try {
                            ApplicationManager.getApplicationManager().runApplication(appDescriptor);
                          }catch (ApplicationManagerException e) 
                          {
                            // TODO Auto-generated catch block
                            System.out.println("in notification exception----"+e);
                            e.printStackTrace();
                        }
                        }

                      //  screen.setDialogClosedListener(new MyDialogClosedListener());
                        }
                        catch (Exception e) {
                        }

OKボタンをクリックしてアプリを開きたいのですが、うまくいきません。

4

1 に答える 1

1

Notification APIの使用を検討しましたか?このようにして、ユーザーはアプリの通知音を設定し、ホーム画面から通知プロファイルが変更されたときに適切に変更することができます。「通常」、「バイブレーションのみ」、「すべてのアラートをオフ」と考えてください。

NotificationsManagerとメソッドを見てtriggerImmediateEventregisterSource

于 2013-03-18T17:30:20.310 に答える