2012-11-14 125 views
1

我已經創建了一個應用程序,用戶可以在其中插入各種主題和他們的考試日。我的應用程序提供了存儲在數據庫中的每個主題的時間跨度。當爲每個主題分配的時間達到時,一個警報應該隨着通知播放。通知正常,但報警聲音不播放。請幫助我。安卓報警聲音不起作用

我報警管理器類是:我用它來打電話報警經理

public class AlarmManager extends BroadcastReceiver { 

sampleDatabase appdb; 
SQLiteDatabase sqldb; 
Cursor cursor; 
int today,prev; 
Intent in; 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    NotificationManager manger = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.icon , "Yahrzeit" , System.currentTimeMillis()); 
    in = new Intent(context,FirstAppActivity.class); 
    in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, in, 0); 
    notification.setLatestEventInfo(context, "ALERT!!!!", "Time Over" , contentIntent); 
    notification.flags = Notification.FLAG_INSISTENT; 
    appdb = new sampleDatabase(context); 
    sqldb = appdb.getReadableDatabase(); 
    cursor = sqldb.query(sampleDatabase.TABLE_SEC, null, null, null, null, null, null); 
    cursor.moveToFirst(); 
    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.SECOND, 0); 
    today = (int)(cal.getTimeInMillis()/1000); 
    Log.e("Naga","Alarm"); 
    Log.e("today",Integer.toString(today)); 
    prev = 0; 
    cursor.moveToPrevious(); 
    while(cursor.moveToNext()) 
    { 
     int dbdate = cursor.getInt(cursor.getColumnIndex(sampleDatabase.ALARMSET)); 
     int id = cursor.getInt(cursor.getColumnIndex(sampleDatabase.ROW_ID)); 
     Log.e("dbdate",Integer.toString(dbdate)); 
     if((dbdate<=today)&&(dbdate>prev)) 
     { 
      manger.cancelAll(); 
      manger.notify(1, notification); 
      sqldb.execSQL("DELETE from " + sampleDatabase.TABLE + " where " + sampleDatabase.ROW_ID + "=" + id); 
      sqldb.execSQL("DELETE from "+sampleDatabase.TABLE_SEC + " where " + sampleDatabase.ROW_ID + "=" + id); 

     } 
     prev = dbdate; 
    } 
    cursor.close(); 
    sqldb.close(); 

} 

代碼是這樣的:

alarmintent = new Intent(getApplicationContext(),com.nagainfo.firstAp.AlarmManager.class); 
       sender = PendingIntent.getBroadcast(getApplicationContext() , 0 , alarmintent , PendingIntent.FLAG_CANCEL_CURRENT | Intent.FILL_IN_DATA);    
       am = (AlarmManager) getSystemService(ALARM_SERVICE); 
       am.cancel(sender); 

       alarmintent = new Intent(getApplicationContext(), com.nagainfo.firstAp.AlarmManager.class); 
       //alarmintent.putExtra("note","Hebrew"); 
       sender = PendingIntent.getBroadcast(getApplicationContext() , 0 , alarmintent , PendingIntent.FLAG_CANCEL_CURRENT | Intent.FILL_IN_DATA); 
       am = (AlarmManager) getSystemService(ALARM_SERVICE); 
       am.setRepeating(AlarmManager.RTC_WAKEUP, alarmtime, 60000, sender); 

回答

1

您還沒有指定要使用的聲音。使用這個:

notification.defaults=Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE; 

如果你不想振動刪除它。關鍵是你必須聰明或者他們。所以,如果你想要的燈光也 -

notification.defaults=Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE|Notification.DEFAULT_LIGHTS; 
1

如果有人正在使用NotificationCompat.Builder,你可以使用:

Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    notifyBuilder.setSound(sound);