Android 鬧鐘和通知
阿新 • • 發佈:2019-02-17
首先看看效果圖
首先是佈局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.zking.myalarmclock.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="設定鬧鐘時間"
android:onClick="set"/>
<TextView
android:layout_width ="match_parent"
android:layout_height="wrap_content"
android:textSize="40sp"
android:id="@+id/tv_main_time"
android:text="測試"/>
</LinearLayout>
activity_prompt.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.zking.myalarmclock.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="設定鬧鐘時間"
android:onClick="set"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="40sp"
android:id="@+id/tv_main_time"
android:text="測試"/>
</LinearLayout>
MainActivity.java
package com.zking.myalarmclock;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
import android.widget.TextView;
import android.widget.TimePicker;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private TextView tv_main_time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
tv_main_time = (TextView) findViewById(R.id.tv_main_time);
}
public void set(View view){
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
calendar.set(Calendar.MINUTE,minute);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this,PromptActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0x101,intent,0);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
tv_main_time.setText(new SimpleDateFormat("HH:mm").format(calendar.getTimeInMillis()));
}
},hour,min,true);
timePickerDialog.show();
}
}
PromptActivity.java
package com.zking.myalarmclock;
import android.app.NotificationManager;
import android.graphics.BitmapFactory;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
public class PromptActivity extends AppCompatActivity {
private MediaPlayer player;
private NotificationCompat.Builder builder;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
builder.setProgress(100,msg.what,false);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prompt);
init();
}
private void init() {
player = MediaPlayer.create(this, R.raw.dong);
player.start();
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
builder = new NotificationCompat.Builder(this);
builder.setDefaults(NotificationCompat.DEFAULT_ALL);
builder.setAutoCancel(true);
builder.setSmallIcon(R.drawable.a);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.a));
builder.setContentTitle("這是一個標題");
builder.setTicker("提示");
manager.notify(0x101, builder.build());
}
public void exit(View view){
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
player.stop();
player.release();
}
}
詳情請看api