2011-06-29 34 views
12

To Pytanie jest już odpowiedział na proste rozwiązanie proszę sprawdzić thisJak ustawić alarm w systemie Android?

Poniżej mój kod może każdy organ proszę mi powiedzieć, dlaczego to nie działa .I nauczyli go z this tutorial. Ale to nie działa, żadna pomoc nie będzie znacząca.

Mój kod jest

import java.util.Calendar; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.ListActivity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.Toast; 


public class Notify extends Activity { 
    Button btn; 

    /** Called when the activity is first created. */ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.nit); 
     Calendar cal=Calendar.getInstance(); 
     cal.set(Calendar.MONTH,6); 
     cal.set(Calendar.YEAR,2011); 
     cal.set(Calendar.DAY_OF_MONTH,29); 
     cal.set(Calendar.HOUR_OF_DAY,17); 
     cal.set(Calendar.MINUTE,30); 

     //String[] dude=new String[] {"nitin","avi","aman","rahul","pattrick","minkle","manmohan","nitin","nitin"}; 

     //setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,dude)); 
     //getListView().setTextFilterEnabled(true); 

     //String[] dude1=new String[] {"nitin","avi","aman","rahul","pattrick","minkle","manmohan"}; 

     Intent intent = new Intent(this, Mote.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

     alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent); 
     Toast.makeText(this, "Alarm worked.", Toast.LENGTH_LONG).show(); 
    } 

} 

i moja klasa Odbiornik jest

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class Mote extends BroadcastReceiver{ 

    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show(); 
     int icon = R.drawable.icon; 
     CharSequence tickerText = "Hello you have to take medicine I am Nitin Sharma"; 
     long when = System.currentTimeMillis(); 

     //Notification notification = new Notification(icon, tickerText,when); 

     CharSequence contentTitle = "My notification"; 
     CharSequence contentText = "Hello World!"; 


     //notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
     final int NOTIF_ID = 1234; 
     NotificationManager notofManager = (NotificationManager)context. getSystemService(Context.NOTIFICATION_SERVICE); 
     // Notification note = new Notification(R.drawable.face,"NEW ACTIVITY", System.currentTimeMillis()); 
     Intent notificationIntent = new Intent(context, Alset.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(context,0, notificationIntent, 0); 
     Notification notification = new Notification(icon, tickerText,when); 
     //Notification notification1 = new Notification(R.drawable.icon, "Wake up alarm", System.currentTimeMillis()); 
     notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
     notification.flags = Notification.FLAG_INSISTENT; 
     notification.defaults |= Notification.DEFAULT_SOUND; 
     //notification.setLatestEventInfo(context, "My Activity", "This will runs on button click", contentIntent); 
     notofManager.notify(NOTIF_ID,notification); 

     //PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0); 
     //notification.setLatestEventInfo(context, "Context Title", "Context text", contentIntent); 
     //notification.flags = Notification.FLAG_INSISTENT; 
    } 



} 
+0

Jak zdobyć wszystkie szczegóły związane z pozostałą konkretnego zastosowania? To oznacza identyfikator alarmu, tekst, tytuł coś takiego. – Karthick

+0

W tym celu należy utworzyć osobną tabelę bazy danych do przechowywania. – Nitin

+0

Czy jest jakikolwiek inny sposób na osiągnięcie tego bez korzystania z bazy danych? – Karthick

Odpowiedz

21

myślę chcesz ustawić alarm na 26 czerwca, a nie 26 lipca. Jeśli tak, zmień cal.set(Calendar.MONTH,6); na cal.set(Calendar.MONTH,5);, ponieważ miesiące są oparte na zera. Jeśli zamierzasz uruchomić alarm w dniu 26 lipca, to oczekuje się, że alarm zostanie uruchomiony, gdy data i godzina to 26 lipca 2011, 17:30

+0

dokładnie, to jest przykład logiki java w akcji – miky

+0

Dzięki, zaoszczędzisz mój czas @frieza –

2

Czy ustawiłeś odbiornik w pliku manifestu? coś takiego

<receiver android:process=":remote" android:name=".Mote"></receiver> 
+1

Tak, ale 'android: process =": ​​remote "' nie jest w 100% konieczne. –

+0

Tak, stary, android: tag procesu służy wyłącznie do uruchamiania Usług i Odbiorców w oddzielnym procesie z własnej aplikacji. –

0

nadzieję, że to pomoże

@Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

       Calendar calNow = Calendar.getInstance(); 
       Calendar calSet = (Calendar) calNow.clone(); 

       calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
       calSet.set(Calendar.MINUTE, minute); 
       calSet.set(Calendar.SECOND, 0); 
       calSet.set(Calendar.MILLISECOND, 0); 

       if(calSet.compareTo(calNow) <= 0){ 
        //Today Set time passed, count to tomorrow 
        calSet.add(Calendar.DATE, 1); 
       } 

       setAlarm(calSet); 
      }}; 

     private void setAlarm(Calendar targetCal){ 

      textAlarmPrompt.setText(
        "\n\n***\n" 
        + "Alarm is [email protected] " + targetCal.getTime() + "\n" 
        + "***\n"); 

      Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0); 
      AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    //  alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent); 
     } 
+0

Jak uzyskać wszystkie pozostałe szczegóły związane z konkretną aplikacją? To oznacza identyfikator alarmu, tekst, tytuł coś takiego. – Karthick

1
1.add this in manifest file 

<receiver android:name=".MyAlarmReciever"> 
      <intent-filter> 
       <action android:name="com.example.helloandroid.alarms" /> 
      </intent-filter> 
     </receiver>   

2. make a activity 

     public class AlrmActivity extends BaseAcitivity { 

      TimePicker myTimePicker; 
      Button buttonstartSetDialog; 
      TextView textAlarmPrompt; 

      TimePickerDialog timePickerDialog; 

      final static int RQS_1 = 1; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_alrm); 

       textAlarmPrompt = (TextView)findViewById(R.id.alarmprompt); 

       buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog); 
       buttonstartSetDialog.setOnClickListener(new View.OnClickListener(){ 

        @Override 
        public void onClick(View v) { 
         textAlarmPrompt.setText(""); 
         openTimePickerDialog(false); 

        }}); 


      } 

      private void openTimePickerDialog(boolean is24r){ 
       Calendar calendar = Calendar.getInstance(); 

       timePickerDialog = new TimePickerDialog(
         AlrmActivity.this, 
         onTimeSetListener, 
         calendar.get(Calendar.HOUR_OF_DAY), 
         calendar.get(Calendar.MINUTE), 
         is24r); 
       timePickerDialog.setTitle("Set Alarm Time"); 

       timePickerDialog.show(); 

      } 
      TimePickerDialog.OnTimeSetListener onTimeSetListener 
        = new TimePickerDialog.OnTimeSetListener(){ 

       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

        Calendar calNow = Calendar.getInstance(); 
        Calendar calSet = (Calendar) calNow.clone(); 

        calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
        calSet.set(Calendar.MINUTE, minute); 
        calSet.set(Calendar.SECOND, 0); 
        calSet.set(Calendar.MILLISECOND, 0); 

        if(calSet.compareTo(calNow) <= 0){ 
         //Today Set time passed, count to tomorrow 
         calSet.add(Calendar.DATE, 1); 
        } 

        setAlarm(calSet); 
       }}; 

      private void setAlarm(Calendar targetCal){ 

       textAlarmPrompt.setText(
         "\n\n***\n" 
           + "Alarm is [email protected] " + targetCal.getTime() + "\n" 
           + "***\n"); 

       Intent intent = new Intent(getBaseContext(), MyAlarmReciever.class); 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0); 
       AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 

      } 

     } 


    3 . xml file include 


    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="hello" /> 
     <Button 
      android:id="@+id/startSetDialog" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Set Target Time"/> 
     <TextView 
      android:id="@+id/alarmprompt" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 


    4 .make alarm manager class 


    public class MyAlarmReciever extends BroadcastReceiver { 

     Vibrator v; 
     Context ct; 
     String title; 


     @Override 
     public void onReceive(Context context, Intent intent) { 

      // TODO Auto-generated method stub 
      ct=context; 

      Log.e("onReceive", "ladskjflsakjdflskjdflskjdfslkjdflasdf"); 
      Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show(); 

      v=(Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE); 
      v.vibrate(3000); 

      int badgeCount = 1; 
      // ShortcutBadger.applyCount(context, badgeCount); 

      ShortcutBadger.removeCount(context); 

      Bundle bundle = intent.getExtras(); 
      try{ 
        title = intent.getExtras().get("title").toString(); 
       // title = intent.getStringExtra("title"); 
       Toast.makeText(context, title, Toast.LENGTH_LONG).show(); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 


    //  if (!Utlis.checkNetworkConnection(context)) { 
    // 
    //   Notification(context, "Wifi Connection off"); 
    // 
    //  } else { 
       Notification(context, "Please pray for this prayer "); 

    //  } 

     } 


     public void Notification(Context context, String message) { 
      // Set Notification Title 
      String strtitle = "iPray Prayer Reminder"; 
      // Open NotificationView Class on Notification Click 
      Intent intent = new Intent(context, PrayerForOtherActivity.class); 
      // Send data to NotificationView Class 
      intent.putExtra("title", title); 
      intent.putExtra("text", title); 
      // Open NotificationView.java Activity 
      PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 
        PendingIntent.FLAG_UPDATE_CURRENT); 

    //  NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.app_icon, "Previous", pIntent).build(); 
      // Create Notification using NotificationCompat.Builder 
      NotificationCompat.Builder builder = new NotificationCompat.Builder(
        context) 
        // Set Icon 
        .setSmallIcon(R.drawable.app_icon) 
        // Set Ticker Message 
        .setTicker(message) 
        // Set Title 
        .setContentTitle(context.getString(R.string.app_name)) 
        // Set Text 
        .setContentText(message) 
        // Add an Action Button below Notification 
        // Set PendingIntent into Notification 
        .setContentIntent(pIntent) 
        // Dismiss Notification 
        .setAutoCancel(true); 

      // Create Notification Manager 
      NotificationManager notificationmanager = (NotificationManager) context 
        .getSystemService(Context.NOTIFICATION_SERVICE); 
      // Build Notification with Notification Manager 
      notificationmanager.notify(38, builder.build()); 

     } 
    } 
Powiązane problemy