2012-04-03 2 views
0

저는 Java를 처음 접했고 여기는 나의 첫 번째 게시물이므로 누군가가 나를 도울 수 있기를 바랍니다. 나는 행운을 빌어 이것에 대한 답을 찾기 위해 Google에 나온 모든 웹 사이트를 점검했습니다. 그래서 설정 시간부터 매 24 시간마다 난수를 생성하는 반복 경보를 설정하려고합니다. 나는 경보 관리자를 사용하고 있으며 경보 관리자를 사용하여 활동이나 서비스를 시작하는 코드 예제를 찾는 것처럼 보일 수 있습니다. 내가하고 싶은 일은 알람 관리자를 사용하여 이미 활동 내부에있는 간단한 명령을 실행하는 것입니다. 여기 활동의 특정 부분을 수행하기위한 Android 설정 알람

내가 무슨의 예입니다 어떤 메신저 것은

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); 
    } 



    } 

나는 generateNumber을 (호출되고 싶은 모든) 메소드를 달성하기 위해 노력하고 (할 다른 방법을 프로그래머 경우이 알려 주시기 바랍니다) 매 24 시간마다 솔루션이 매우 간단하다는 것이 확실합니다. 코드를 너무 길어서 알아낼 수는 없었습니다. 어떤 도움을 주시면 대단히 감사하겠습니다 !!!

+0

시도 24 시간인가요? –

+0

기본적으로 네, 할 일을 더 추가 할 수 있습니다.하지만이 작업을 수행하는 올바른 방법이 무엇인지 모릅니다. 많은 방송 수신기 예를보고 있지만 다른 방법이 있는지 궁금합니다. 브로드 캐스트 수신자를 사용하는 것이 적절한 방법이라면, 내가이 모든 것을 처음 접했을 때처럼 알려주십시오. 감사합니다. –

답변

0

당신은 그래서 당신은 단지 모든 활동에서`generateRandom을()`호출 할이 하나 개의 코드

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; 
    } 
} 

다른 하나 개의 클래스

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(); 
    } 

} 

방송 클래스

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

방송 수신자를 사용하여 원하는 것을 수행 할 것을 제안합니다. 이것은 나쁜 말로 표현 될 것입니다. 그러나 저는이 물건에 상당히 익숙합니다. 그래서 방송 수신자는 사용자가 보지도 않고 상호 작용하지도 않는 활동을 말합니다. –