Я работаю над небольшим применением радиолокационной антенны. Приложение извлекает радиопоток из Интернета и воспроизводит его по Media Player
. Все работает отлично, но моя следующая проблема заключается в добавлении тревоги в том же приложении. Тревога запустит радио на определенную дату (день, час, минута). Тревога выглядит так же, как официальный будильник Android. Раскладка: alarm.xmlНедельная повторяющаяся тревога
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ff4379df">
<TimePicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/timePicker"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<LinearLayout
android:weightSum="7"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/timePicker"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<ToggleButton
android:textOn="P"
android:textOff="P"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_monday" />
<ToggleButton
android:textOn="U"
android:textOff="U"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_tuesday" />
<ToggleButton
android:textOn="S"
android:textOff="S"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_wednesday" />
<ToggleButton
android:textOn="C"
android:textOff="C"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_thursday" />
<ToggleButton
android:textOn="P"
android:textOff="P"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_friday" />
<ToggleButton
android:textOn="S"
android:textOff="S"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_sat" />
<ToggleButton
android:textOn="N"
android:textOff="N"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chk_sunday" />
</LinearLayout>
</RelativeLayout>
И alarm.java, который является (вкладка) Фрагмент Обновлено 2 #
public class alarm extends Fragment {
TimePicker timePicker;
ToggleButton chk_monday;
ToggleButton chk_tuesday;
ToggleButton chk_wednesday;
ToggleButton chk_thursday;
ToggleButton chk_friday;
ToggleButton chk_sat;
ToggleButton chk_sunday;
TextView textView;
final static int RQS_1 = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.alarm, container, false);
final ToggleButton chk_monday = (ToggleButton) rootView.findViewById(R.id.chk_monday);
ToggleButton chk_tuesday = (ToggleButton) rootView.findViewById(R.id.chk_tuesday);
ToggleButton chk_wednesday = (ToggleButton) rootView.findViewById(R.id.chk_wednesday);
ToggleButton chk_thursday = (ToggleButton) rootView.findViewById(R.id.chk_thursday);
ToggleButton chk_friday = (ToggleButton) rootView.findViewById(R.id.chk_friday);
ToggleButton chk_sat = (ToggleButton) rootView.findViewById(R.id.chk_sat);
ToggleButton chk_sunday = (ToggleButton) rootView.findViewById(R.id.chk_sunday);
TimePicker timePicker = (TimePicker) rootView.findViewById(R.id.timePicker);
timePicker.setIs24HourView(true);
/**/
Calendar calSet = Calendar.getInstance();
int hour = calSet.get(Calendar.HOUR_OF_DAY);
int min = calSet.get(Calendar.MINUTE);
timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
/**/
if (chk_monday.isChecked()) {
forday(2);
} if (chk_tuesday.isChecked()) {
forday(3);
} if (chk_wednesday.isChecked()) {
forday(4);
} if (chk_thursday.isChecked()) {
forday(5);
}if (chk_friday.isChecked()) {
forday(6);
} if (chk_sat.isChecked()) {
forday(7);
}if (chk_sunday.isChecked()) {
forday(1);
}
return rootView;
}
public void forday (int week) {
Calendar calSet = Calendar.getInstance();
calSet.set(Calendar.DAY_OF_WEEK, week);
calSet.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calSet.set(Calendar.MINUTE, timePicker.getCurrentMinute());
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(getActivity().getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity().getApplicationContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), 1 * 60 * 60 * 1000, pendingIntent);
}
}
Теперь моя цель состоит в том, чтобы сделать его повторять каждый день, час, минуту, когда пользователь заявляет об этом. Плюс он должен оставаться в TextView
день и время, когда пользователь установил его. + Я использовал this link, чтобы немного поправить себя.
Update 2 # Создано AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("onReceive", "Recived!");
Toast.makeText(context, "OnRecive!", Toast.LENGTH_SHORT).show();
}
}
Добавлен приемник AndroidManifest.xml
<receiver android:name=".AlarmReceiver"></receiver>
Кажется, вы на правильном пути, я не уверен, какова ваша проблема на самом деле. Вы можете сохранить дату, установленную пользователем в вашем «SharedPreferences», например, и когда вы извлекаете свой «Активность»/«Фрагмент», восстановите значение и установите его в свой «TextView» –
. Я надеюсь, что он на правильном пути , Я пробовал это целыми днями, все еще ничего. Моя проблема - кнопка, которая сохранит все. Как сделать его? – FiN
Почему вы получаете информацию о днях, если вы собираетесь ежедневно ее запускать? Просто используйте «HH: mm: SS.ms» – Alpaslan