gpt4 book ai didi

java - 以编程方式设置android闹钟

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:26 26 4
gpt4 key购买 nike

我正在尝试构建一个个人应用程序,用于在 DeskClock 应用程序中设置闹钟。我可以让它在当天的任何时间设置闹钟,但我将如何为第二天或本周晚些时候设置闹钟。查看 android 中的 AlarmClock api,我看不到执行此操作的正常方法。这可能吗?

顺便说一句,这是我设置闹钟的代码,它可能不太漂亮,但我正在学习。

 package com.netwokz.setit;

import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.provider.AlarmClock;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {
Button btnSetAlarm;
EditText etHour, etMinute;
int minute, hour, day;
Calendar cal;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
btnSetAlarm = (Button) findViewById(R.id.btn_set_alarm);
etHour = (EditText) findViewById(R.id.etHour);
etMinute = (EditText) findViewById(R.id.etMinute);
btnSetAlarm.setOnClickListener(this);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity, menu);
return true;
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_set_alarm:
setAlarm();
break;
}
}

private void setAlarm() {
cal = new GregorianCalendar();
cal.setTimeInMillis(System.currentTimeMillis());
day = cal.get(Calendar.DAY_OF_WEEK);
hour = cal.get(Calendar.HOUR_OF_DAY);
minute = cal.get(Calendar.MINUTE);

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_HOUR, hour + Integer.parseInt(etHour.getText().toString()));
i.putExtra(AlarmClock.EXTRA_MINUTES, minute + Integer.parseInt(etMinute.getText().toString()));
i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
startActivity(i);
}
}

最佳答案

主 Activity .java

public class MainActivity extends Activity {

   TimePicker myTimePicker;
   Button buttonstartSetDialog;
   TextView textAlarmPrompt;
   TimePickerDialog timePickerDialog;

   final static int RQS_1 = 1;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

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

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

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

           }
       });

   }

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

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

       timePickerDialog.show();

   }

   OnTimeSetListener onTimeSetListener = new 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 set "
               + 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);

   }  
}

接收者.java

public class AlarmReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context k1, Intent k2) {
       // TODO Auto-generated method stub
        Toast.makeText(k1, "Alarm received!", Toast.LENGTH_LONG).show();

   }

}

main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:padding="10dp" >

   <Button
       android:id="@+id/startAlaram"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="Set Alaram Time" />

   <TextView
       android:id="@+id/alarmprompt"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:textColor="#000000" />

</LinearLayout>

list .xml

<application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       <activity
           android:name=".MainActivity"
           android:label="@string/title_activity_main" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
        <receiver android:name=".AlarmReceiver" android:process=":remote" />
   </application>

关于java - 以编程方式设置android闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com