当前位置: 移动技术网 > IT编程>移动开发>Android > android闹铃简单实现

android闹铃简单实现

2019年07月24日  | 移动技术网IT编程  | 我要评论

pcgames lol,诚恳的反义词,韩城黑客下载

1.闹铃activity

复制代码 代码如下:

package com.example.myalarm;
import java.util.calendar;
import java.util.date;
import java.util.locale;
import android.media.ringtonemanager;
import android.net.uri;
import android.os.bundle;
import android.provider.mediastore;
import android.app.activity;
import android.app.alarmmanager;
import android.app.pendingintent;
import android.app.timepickerdialog;
import android.app.timepickerdialog.ontimesetlistener;
import android.content.intent;
import android.database.cursor;
import android.util.log;
import android.view.menu;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.timepicker;
public class alarmactivity extends activity {
    private static final string tag = "alarmactivity";
    alarmmanager alarmmanager;
    calendar calendar = calendar.getinstance(locale.chinese);
    button settime;
    button setring;
    button setover;
    uri ringuri = ringtonemanager.getdefaulturi(ringtonemanager.type_alarm);
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_alarm);
        alarmmanager = (alarmmanager) getsystemservice(alarm_service);
        settime = (button) findviewbyid(r.id.settime);
        setring = (button) findviewbyid(r.id.setring);
        setover = (button) findviewbyid(r.id.setover);
        //settime();
        //setringtone();
        settimeandring();
    }
    private void settimeandring(){
        settime.setonclicklistener(new onclicklistener() {
            @override
            public void onclick(view view) {
                settime();
            }
        });
        setring.setonclicklistener(new onclicklistener() {
            @override
            public void onclick(view view) {
                setringtone();
            }
        });
        setover.setonclicklistener(new onclicklistener() {
            @override
            public void onclick(view view) {
                setalarm(calendar);
            }
        });
    }
    //启动闹玲,设置闹玲
    private void setalarm(calendar calendar){
        intent intent = new intent();
        intent.setclass(this, alarmbroadcastreceiver.class);
        intent.putextra("msg", "get up!get up!");
        intent.putextra("ringuri", ringuri.tostring());
        log.d(tag, ringuri.tostring());
        pendingintent pendingintent = pendingintent.getbroadcast(this, 0, intent, 0);
        alarmmanager.set(alarmmanager.rtc_wakeup,calendar.gettimeinmillis(), pendingintent);
    }
    //设置时间
    private void settime(){
        date date = new date();
        calendar.settime(date);
        int hour = calendar.get(calendar.hour);
        int minute = calendar.get(calendar.minute);
        new timepickerdialog(this, new ontimesetlistener() {
            @override
            public void ontimeset(timepicker timepicker, int hour, int minute) {
                calendar.set(calendar.hour,hour);
                calendar.set(calendar.minute,minute);
            }
        }, hour, minute, true).show();
    }
    //设置闹玲铃声
    private void setringtone(){
        intent intent = new intent();
        intent.setaction(ringtonemanager.action_ringtone_picker);
        intent.putextra(ringtonemanager.extra_ringtone_show_default, false);
        intent.putextra(ringtonemanager.extra_ringtone_title, "设置闹玲铃声");
        intent.putextra(ringtonemanager.extra_ringtone_type, ringtonemanager.type_all);
        uri pickeduri = ringtonemanager.getactualdefaultringtoneuri(this,ringtonemanager.type_alarm);
        if (pickeduri!=null) {
            intent.putextra(ringtonemanager.extra_ringtone_existing_uri,pickeduri);
            ringuri = pickeduri;
        }
        startactivityforresult(intent, 1);
    }
    @override
    protected void onactivityresult(int requestcode, int resultcode, intent data) {
        super.onactivityresult(requestcode, resultcode, data);
        if (resultcode!=result_ok) {
            return;
        }
        switch (requestcode) {
        case 1:
            //获取选中的铃声的uri
            uri pickeduri = data.getparcelableextra(ringtonemanager.extra_ringtone_picked_uri);
            log.i(tag,pickeduri.tostring());
            ringtonemanager.setactualdefaultringtoneuri(this, ringtonemanager.type_alarm, pickeduri);
            getname(ringtonemanager.type_alarm);
            break;
        default:
            break;
        }
    }
    private void getname(int type){
        uri pickeduri = ringtonemanager.getactualdefaultringtoneuri(this, type);
        log.i(tag,pickeduri.tostring());
        cursor cursor = this.getcontentresolver().query(pickeduri, new string[]{mediastore.audio.media.title}, null, null, null);
        if (cursor!=null) {
            if (cursor.movetofirst()) {
                string ring_name = cursor.getstring(0);
                log.i(tag,ring_name);
                string[] c = cursor.getcolumnnames();
                for (string string : c) {
                    log.i(tag,string);
                }
            }
            cursor.close();
        }
    }
    @override
    public boolean oncreateoptionsmenu(menu menu) {
        getmenuinflater().inflate(r.menu.alarm, menu);
        return true;
    }
}

2,布局文件

复制代码 代码如下:

<relativelayout xmlns:android=""
    xmlns:tools=""
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <button android:id="@+id/settime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="设置时间"/>
    <button android:id="@+id/setring"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/settime"
        android:text="设置铃声"/>
    <button android:id="@+id/setover"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/setring"
        android:text="设置完成"/>
</relativelayout>

3.广播接收闹铃信息:

复制代码 代码如下:

package com.example.myalarm;
import java.io.ioexception;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
import android.media.mediaplayer;
import android.net.uri;
import android.util.log;
import android.widget.toast;
public class alarmbroadcastreceiver extends broadcastreceiver {
    uri ringuri;
    @override
    public void onreceive(context context, intent intent) {
        string msg = intent.getstringextra("msg");
        toast.maketext(context, msg, toast.length_short).show();
        mediaplayer mp = new mediaplayer();
        string uri = intent.getstringextra("ringuri");
        if (uri!=null) {
            ringuri = uri.parse(uri);
            log.d("alarmactivity", ringuri.tostring());
        }
        try {
            mp.setdatasource(context, ringuri);
            mp.prepare();
        } catch (illegalargumentexception e) {
            e.printstacktrace();
        } catch (securityexception e) {
            e.printstacktrace();
        } catch (illegalstateexception e) {
            e.printstacktrace();
        } catch (ioexception e) {
            e.printstacktrace();
        }
        mp.start();
    }
}

4.在manifest文件中注册广播

复制代码 代码如下:

 <receiver android:name="com.example.myalarm.alarmbroadcastreceiver"></receiver>

以上代码就是实现android闹钟的全部代码了,希望大家能够喜欢。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网