2012-04-03 7 views
0

私はJavaを初めて使いました。これは私の最初の投稿ですので、誰かが助けてくれることを願っています。私は運がないとこれに対する答えを見つけるためにGoogleに来たすべてのウェブサイトをチェックした。だから私は設定された時間から24時間ごとに乱数を生成する繰り返しアラームを設定しようとしています。私はアラームマネージャを使用しており、アラームマネージャを使用してアクティビティやサービスを開始するコード例しか見つからないようです。私がしたいのは、すでにアクティビティの中にある単純なコマンドを実行するためにアラームマネージャを使用することです。ここでAndroid設定アラームでアクティビティの特定の部分を実行する

は私が持っているものの一例であり、私がやりたいすべてがgenerateNumber()メソッドを呼び出して何イム

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



    } 

を達成しようとしている(これを行うにはtheresの別の方法場合は私に知らせてください) 24時間ごとにソリューションが非常にシンプルであると確信しています。私はコードを見て長すぎてLOLを理解できないと思います。どんな助けでも大歓迎です!!!

+0

を試してみてください24時間ですよね? –

+0

基本的にはい、私はもっとやりたいことを追加するかもしれませんが、これを行う正しい方法が何であるか分かりません。私は多くの放送受信機の例を見ていますが、私はそれを行う別の方法があるのだろうかと思っています。放送受信機を使用している場合は、それを行う適切な方法です私は、私はすべてのこの新しいことだと言ったように、私に知らせてください。ありがとう –

答えて

0

あなたはとてもあなただけのすべての活動から `generateRandomを()`呼び出したいこの1つのコード

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

ブロードキャストレシーバを使って私がしたいことをすることをお勧めします。これは悪い言葉になるだろうが、私はかなりこのようなものに新しいですので、ブロードキャストレシーバは、ユーザーが表示されていないか、相互作用していない活動、つまり呼び出されたときにそのコードを起動します。 –

関連する問題