1. 程式人生 > >Android 鬧鐘和通知

Android 鬧鐘和通知

首先看看效果圖
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述
首先是佈局
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

這裡寫圖片描述
這裡寫圖片描述