2012-04-03 4 views
0

Ich bin neu in Java und das ist mein erster Beitrag hier, also hoffentlich kann mir jemand helfen. Ich habe jede Website überprüft, die in Google gefunden wurde, um die Antwort darauf ohne Glück zu finden. Daher versuche ich, einen Wiederholungsalarm einzurichten, der ab der eingestellten Zeit alle 24 Stunden eine Zufallszahl generiert. Ich verwende den Alarm-Manager und kann nur Code-Beispiele finden, die den Alarm-Manager zum Starten von Aktivitäten oder Diensten verwenden. Ich möchte mit dem Alarm-Manager einen einfachen Befehl ausführen, der bereits in einer Aktivität enthalten ist. (Wenn eine andere Art und Weise Theres dies bitte tun Sie mich bitte)Android Einstellung Alarm, um einen bestimmten Teil einer Aktivität zu tun

Hier ist ein Beispiel dafür, was ich habe und was im Versuch

import java.util.Calendar; 
import java.util.Random; 
import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 

public class ExampleCode extends Activity 
{ 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.example); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);   // Here I want to set an alarm  

     Calendar twentyFourHourCalendar = Calendar.getInstance();  


     twentyFourHourCalendar.set(Calendar.HOUR_OF_DAY, 24);         // At midnight 
     twentyFourHourCalendar.set(Calendar.MINUTE, 0); 
     twentyFourHourCalendar.set(Calendar.SECOND, 0); 

     Intent someIntent = new Intent("com.example.SomeOtherProcess");      // Instead of an activity I want it to run the generateRandom() method below 

     someIntent.putExtra("NotifID", 1);         

     PendingIntent displayIntent = PendingIntent.getActivity(
      getBaseContext(), 0, someIntent, 0);    

     alarmManager.set(AlarmManager.RTC_WAKEUP, 
       twentyFourHourCalendar.getTimeInMillis(), displayIntent); 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, twentyFourHourCalendar    // I want it to generate a random number every midnight without any user interaction 
       .getTimeInMillis(), 24 * 60 * 60 * 1000, displayIntent);   

    } 



    public void generateRandom()                // This is the method that I want to repeat 
    { 
     Random generator = new Random(); 
      int randomNumber = generator.nextInt(2); 
    } 



    } 

Alles, was ich tun möchte, zu erreichen, ist die generateNumber() -Methode aufrufen Alle vierundzwanzig Stunden bin ich mir sicher, dass die Lösung sehr einfach ist. Ich denke, ich habe mir den Code zu lange angesehen, um es herauszufinden, lol. Jede Hilfe wird sehr geschätzt werden !!!

+0

so rufen Sie wollen einfach nur 'generateRandom (') von Aktivität jeder 24 Stunden, oder? –

+0

Grundsätzlich ja, ich könnte noch ein paar Dinge hinzufügen, aber ich weiß nicht, was der richtige Weg wäre, dies zu tun. Ich sehe viele Beispiele für Rundfunkempfänger, aber ich frage mich, ob es einen anderen Weg gibt, es zu tun. Wenn ein Broadcast Reciever der richtige Weg ist, dann lass es mich wissen, wie ich sagte, ich bin neu in all dem. Danke –

Antwort

0

Sie versuchen, diesen einen Code

public class Add_todo_list extends Activity { 
    protected static final int DATE_DIALOG_ID = 0; 
    private static final int TIME_DIALOG_ID = 1; 
    private int mYear; 
    private int mMonth; 
    private int mDay; 
    private int mHour; 
    private int mMinute; 
    private int aY; 
    private int aMo; 
    private int aD; 
    private int aH; 
    private int aMi; 


    protected void onResume() { 
     // TODO Auto-generated method stub 
     getRecords(); 
     super.onResume(); 
    } 

    Button save, clear, back, cat_add; 
    EditText title, disc, due_date, alarm_time; 
    Spinner category; 
    ToggleButton alarm_set; 
    RadioGroup priority; 
    RadioButton r1, r2, r3; 
    private Database_creat mDbHelper; 
    private Alarm_set alarmset; 
    ArrayAdapter<String> adapter; 

    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.todo_add); 

     save = (Button) findViewById(R.id.todo_add_Bnt_Save); 
     clear = (Button) findViewById(R.id.todo_add_Bnt_clear); 
     back = (Button) findViewById(R.id.todo_add_Bnt_back); 
     cat_add = (Button) findViewById(R.id.todo_add_Bnt_category_add); 

     title = (EditText) findViewById(R.id.todo_add_edt_title); 
     disc = (EditText) findViewById(R.id.todo_add_edt_description); 
     due_date = (EditText) findViewById(R.id.todo_add_edt_due_date); 
     alarm_time = (EditText) findViewById(R.id.todo_add_edt_alaram_time); 
     category = (Spinner) findViewById(R.id.todo_add_spin_category); 
     alarm_set = (ToggleButton) findViewById(R.id.todo_add_togbnt); 
     priority = (RadioGroup) findViewById(R.id.todo_add_RadGro_priority); 
     r1 = (RadioButton) findViewById(R.id.todo_add_Red_hige); 
     r2 = (RadioButton) findViewById(R.id.todo_add_Rad_medium); 
     r3 = (RadioButton) findViewById(R.id.todo_add_Rad_low); 

     mDbHelper = new Database_creat(Add_todo_list.this); 
     mDbHelper.Open(); 
     alarmset = new Alarm_set(); 

     adapter = new ArrayAdapter<String>(this, 
       android.R.layout.select_dialog_item); 
     getRecords(); 
     category.setAdapter(adapter); 
     category.setPrompt("Category"); 

     //Date editText box display date dialog box 
     due_date.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       showDialog(DATE_DIALOG_ID); 
      } 
     }); 
     //Time editText box display Time dialog box 
     alarm_time.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       showDialog(TIME_DIALOG_ID); 
      } 
     }); 
     final Calendar c = Calendar.getInstance(); 


     mYear = c.get(Calendar.YEAR); 
     mMonth = c.get(Calendar.MONTH); 
     mDay = c.get(Calendar.DAY_OF_MONTH); 
     aD = mDay; 
     aY = mYear; 
     aMo = mMonth; 
     mHour = c.get(Calendar.HOUR_OF_DAY); 
     mMinute = c.get(Calendar.MINUTE); 
     updateDisplay(); 

     // Add new Category 
     cat_add.setOnClickListener(new OnClickListener() { 


      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(Add_todo_list.this, 
         Add_new_category.class); 
       startActivity(intent); 
      } 
     }); 

     //Bace button go to Main Activity 
     back.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 
       // TODO Auto-generated method stub 
       finish(); 
      } 
     }); 
     clear.setOnClickListener(new OnClickListener() { 

         public void onClick(View v) { 
       // TODO Auto-generated method stub 
       title.setText(""); 
       disc.setText(""); 
       updateDisplay(); 
      } 
     }); 

     // Save Button to DataBase in Save info 
     save.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 
       // TODO Auto-generated method stub 


       String a = title.getText().toString().trim(); 
       String b = disc.getText().toString().trim(); 
       String c = due_date.getText().toString().trim(); 
       String d = alarm_time.getText().toString().trim(); 
       String e = category.getSelectedItem().toString(); 
       String f = alarm_set.getText().toString(); 
       String g = getradio(priority.getCheckedRadioButtonId()); 
       String currentDateTimeString = DateFormat.getDateInstance() 
         .format(new Date()); 
       // Log.v("save", g+" "); 
       Intent intent; 
       if (a.length() != 0 && b.length() != 0 && mYear >= aY && mMonth >= aMo && mDay >= aD) { 
        // if(c currentDateTimeString){ 
        mDbHelper.insert_todoinfo(a, b, c, d, e, f, g); 
        Toast.makeText(Add_todo_list.this, "Add New Note ", 
          Toast.LENGTH_SHORT).show(); 

        finish(); 

        // DateFormat formatter; 
        // Date date = null; 
        // formatter = new SimpleDateFormat("MM-dd-yyyy"); 
        // try { 
        // date = (Date) formatter.parse(c); 
        // } catch (ParseException e1) { 
        // // TODO Auto-generated catch block 
        // e1.printStackTrace(); 
        // } 

        // Alarm Set Save with 
        Cursor cursor = mDbHelper.getId(c, d); 
        int getid = 0; 
        Log.v("cursor", "" + cursor.getCount()); 
        while (cursor.moveToNext()) { 
         String id = cursor.getString(0); 
         getid = Integer.parseInt(id); 
        } 
        alarmset = new Alarm_set(); 
        alarmset.Alarmset(Add_todo_list.this, c, d, getid); 

       } else { 
        Toast.makeText(Add_todo_list.this, 
          "Enter Title,Discription and Velid Date ", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      } 

     }); 
    } 

    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 

     public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      mYear = year; 
      mMonth = monthOfYear; 
      mDay = dayOfMonth; 
       updateDisplay();  
     } 
    }; 

    private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      mHour = hourOfDay; 
      mMinute = minute; 
      updateDisplay(); 
     } 
    }; 

    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DATE_DIALOG_ID: 
      return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, 
        mDay); 

     case TIME_DIALOG_ID: 
      return new TimePickerDialog(this, mTimeSetListener, 0, 0, false); 

     } 
     return null; 
    } 

    private void updateDisplay() { 
     // TODO Auto-generated method stub 
     due_date.setText(""); 
     alarm_time.setText(""); 
     due_date.setText(new StringBuilder() 
       // Month is 0 based so add 1 
       .append(mMonth + 1).append("-").append(mDay).append("-") 
       .append(mYear)); 
     alarm_time.setText(new StringBuilder().append(pad(mHour)).append(":") 
       .append(pad(mMinute))); 



    } 

    private Object pad(int x) { 
     // TODO Auto-generated method stub 
     if (x >= 10) 
      return String.valueOf(x); 
     else 
      return "0" + String.valueOf(x); 

    } 

    //Get List of Category 
    private void getRecords() { 
     // arrayList.clear(); 
     adapter.clear(); 
     Cursor cursor = mDbHelper.getInfoRecords(); 

     while (cursor.moveToNext()) { 
      String id = cursor.getString(0); 
      String Categore = cursor.getString(1); 
      adapter.add(Categore); 
     } 
    } 

    //RedioButton Select to get Radio String 
    private String getradio(int id) { 
     // TODO Auto-generated method stub 

     String ab = null; 
     switch (id) { 
     case R.id.todo_add_Rad_low: 
      ab = r3.getText().toString(); 
      break; 
     case R.id.todo_add_Rad_medium: 
      ab = r2.getText().toString(); 
      break; 
     case R.id.todo_add_Red_hige: 
      ab = r1.getText().toString(); 
      break; 
     } 
     return ab; 
    } 
} 

und andere Klasse

public class Alarm_set extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 
    //Set Alarm 
    public void Alarmset(Context cont, String c, String d, int getid) { 
     Log.v("alaramiuughuhuiohioh", "dfdd"); 

     int cd = 0, cy = 0, cmo = 0, ch = 0, cmi = 0, cm = 0; 
     String date = c.substring(3, 5); 
     String month = c.substring(0, 2); 
     String Year = c.substring(6, 10); 
     String min = d.substring(3, 5); 
     String hours = d.substring(0, 2); 
     Log.v("get ste", date + "-" + month + "-" + Year); 

     cd = Integer.parseInt(date); 
     cy = Integer.parseInt(Year); 
     cm = Integer.parseInt(month); 
     cmo = cm - 1; 
     ch = Integer.parseInt(hours); 
     cmi = Integer.parseInt(min); 
     Calendar cal = Calendar.getInstance(); 
     cal.set(cy, cmo, cd, ch, cmi); 
     Log.v("set", cy + "-" + cd + "-" + cmo + "-" + ch + "-" + cmi); 
     Log.v("alarm set", "alarm set in " + cal.getTimeInMillis()); 

     Intent intent = new Intent(cont, AlarmReceiverActivity.class); 
     intent.putExtra("id",getid); 
     PendingIntent penintent = PendingIntent.getBroadcast(cont, getid, 
       intent, 0); 
     AlarmManager alm = (AlarmManager) cont.getSystemService(ALARM_SERVICE); 
     alm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), penintent); 

    } 

    //Delete Alarm 
    public void Alarmcancel(Context cont, int id) { 
     Intent intent = new Intent(cont, AlarmReceiverActivity.class); 
     PendingIntent penintent = PendingIntent.getBroadcast(cont, id, intent, 
       0); 
     penintent.cancel(); 
     //Toast.makeText(cont, "alarm stop", Toast.LENGTH_LONG).show(); 
    } 

} 

und Broadcast-Klasse

public class AlarmReceiverActivity extends BroadcastReceiver { 
    private static final int MODE_WORLD_READABLE = 0; 
    private NotificationManager nm; 
    private Database_creat mDbHelper; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     String descr = null; 
     mDbHelper = new Database_creat(context); 
     mDbHelper.Open(); 
     int id = intent.getIntExtra("id",0); 
     Log.v("alarmreciev Id ",id+""); 
     String sub_id = String.valueOf(id); 
     String alarm_set = null; 
     String title = null ; 
     SharedPreferences myPrefs; 

     // Get Title,Description And Set Status Bar Notifications 
     Cursor cursor = mDbHelper.getdata_disp(id); 
     while (cursor.moveToNext()) { 
      String Title = cursor.getString(0); 
      String Description = cursor.getString(cursor.getColumnIndex("description")); 
      alarm_set =cursor.getString(cursor.getColumnIndex("alarm_set")); 
      title = cursor.getString(cursor.getColumnIndex("title")); 

      descr = Description; 
     } 

     nm = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 

       CharSequence from = "To Do List"; 
       Intent disintent = new Intent(context,Todo_display_win.class); 

       disintent.putExtra("id",sub_id); 
       Log.v("send to display Id", sub_id); 
       CharSequence message = title; 
       Notification notif = new Notification(R.drawable.notes, 
         "To do List", System.currentTimeMillis()); 
       notif.flags=Notification.FLAG_AUTO_CANCEL; 

       PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
         disintent,Notification.FLAG_AUTO_CANCEL); 

       notif.setLatestEventInfo(context, from, message, contentIntent); 
       nm.notify(1, notif); 
       //nm.cancel(1); 
       //notif.defaults |= Notification.FLAG_AUTO_CANCEL; 




       if(alarm_set.equals("on")) 
       { 
        Toast.makeText(context,title, Toast.LENGTH_LONG).show(); 
       } 

       myPrefs = context.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
       String on = "on"; 
       Log.v("sound", myPrefs.getString("sound", "off")); 
       if (on.equals(myPrefs.getString("sound", "off"))) { 
        notif.defaults |= Notification.DEFAULT_SOUND; 
       } 
       Log.v("vibrate", myPrefs.getString("vibrate", "off")); 
       if (on.equals(myPrefs.getString("vibrate", "off"))) { 
        notif.defaults |=Notification.DEFAULT_VIBRATE; 
       } 
       Log.v("light", myPrefs.getString("light", "off")); 
       if (on.equals(myPrefs.getString("light", "off"))) { 
        notif.defaults |= Notification.DEFAULT_LIGHTS; 
       } 
    } 

    } 
+0

Sie schlagen vor, einen Rundfunkempfänger zu verwenden, um zu tun, was ich will. Dies wird schlecht formuliert werden, aber ich bin ziemlich neu in diesem Zeug, also ist ein Broadcast Reciever BASICALLY eine Aktivität, die der Benutzer nicht sieht oder mit der sie interagieren, die ihren Code feuert, wenn es aufgerufen wird? –

Verwandte Themen