Я новичок в Android. Я пытаюсь разработать приложение для будильника, которое на самом деле является говорящими часами. Я просто хочу, чтобы часы использовали TextToSpeech API и говорили о приветствии и текущем времени, как только будет установлено время будильника. Речевая часть сделана. И теперь я хочу реализовать функциональность Alarm. Но сначала я просто пытаюсь отобразить тост через 10 секунд, чтобы проверить, правильно ли работают мои классы. И я не получаю желаемого ответа, и я не знаю почему? Ниже приведены классы
Основной класс aClockActivity
public class aClockActivity extends Activity {
/** Called when the activity is first created. */
private PendingIntent mAlarmSender;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button)findViewById(R.id.buttonOn);
button1.setOnClickListener(mStartAlarmListener);
Button button2 = (Button)findViewById(R.id.buttonOff);
button2.setOnClickListener(mStopAlarmListener);
}
private OnClickListener mStartAlarmListener = new OnClickListener() {
public void onClick(View v) {
// We want the alarm to go off 30 seconds from now.
//long firstTime = SystemClock.elapsedRealtime();
EditText Ehour = (EditText) findViewById(R.id.hour);
EditText Eminute = (EditText) findViewById(R.id.minute);
CharSequence CharHour = Ehour.getText();
CharSequence CharMinute = Eminute.getText();
int hour = Integer.parseInt(CharHour.toString());
int minute = Integer.parseInt(CharMinute.toString());
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
// calendar.add(Calendar.MINUTE, 1);
cal.add(Calendar.SECOND, 10);
mAlarmSender = PendingIntent.getBroadcast(aClockActivity.this,
0, new Intent(aClockActivity.this, Alarm_Broadcast.class), 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), mAlarmSender);
// Tell the user about what we did.
Toast.makeText(aClockActivity.this, "The Alarm is Set",
Toast.LENGTH_LONG).show();
}
};
private OnClickListener mStopAlarmListener = new OnClickListener() {
public void onClick(View v) {
// And cancel the alarm.
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(mAlarmSender);
// Tell the user about what we did.
Toast.makeText(aClockActivity.this, "Setting off the alarm",
Toast.LENGTH_LONG).show();
}
};
Второй класс Alarm_Broadcast
public class Alarm_Broadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();
}
}
Примечание. Просто игнорируйте часть Edittext в методе OnClick (), я бы использовал его позже.
Помимо вышеуказанной проблемы, я хотел бы задать несколько вопросов.
1) Как я могу реализовать это приложение, чтобы при установке будильника оно могло фактически работать как служба в панели уведомлений, где запускается оригинальный AlarmClock. Так что, даже если приложение закрыто, оно все еще работает, чтобы вызвать нужное сообщение в нужное время.
2) Я не могу показать ни одно диалоговое окно или могу использовать TTS, если AlarmManager вызывает класс, который расширяет либо Service, либо BroadcastReciever.
3) Я был бы признателен, если бы кто-нибудь дал мне идею реализовать это приложение, я уверен, что есть много экспертов, которые бы прошли через это приложение.
Привет
Омайр