• 5月30日学习日志


    今天学习了AlarmManager(闹钟服务)。

    首先一个简单的布局文件:activity_main.xml,另外在res创建一个raw文件夹,把音频文件丢进去! 另外创建一个只有外层布局的activity_clock.xml作为闹钟响时Activity的布局!

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/btn_set"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="设置闹钟" />
    
        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="关闭闹钟"
            android:visibility="gone" />
    
    </LinearLayout>

    接着是MainActivity.java,也很简单:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        private Button btn_set;
        private Button btn_cancel;
        private AlarmManager alarmManager;
        private PendingIntent pi;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            bindViews();
        }
    
        private void bindViews() {
            btn_set = (Button) findViewById(R.id.btn_set);
            btn_cancel = (Button) findViewById(R.id.btn_cancel);
            alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    
            Intent intent = new Intent(MainActivity.this, ClockActivity.class);
            pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
    
            btn_set.setOnClickListener(this);
            btn_cancel.setOnClickListener(this);
    
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_set:
                    Calendar currentTime = Calendar.getInstance();
                    new TimePickerDialog(MainActivity.this, 0,
                            new TimePickerDialog.OnTimeSetListener() {
                                @Override
                                public void onTimeSet(TimePicker view,
                                                      int hourOfDay, int minute) {
                                    //设置当前时间
                                    Calendar c = Calendar.getInstance();
                                    c.setTimeInMillis(System.currentTimeMillis());
                                    // 根据用户选择的时间来设置Calendar对象
                                    c.set(Calendar.HOUR, hourOfDay);
                                    c.set(Calendar.MINUTE, minute);
                                    // ②设置AlarmManager在Calendar对应的时间启动Activity
                                    alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
                                    Log.e("HEHE",c.getTimeInMillis()+"");   //这里的时间是一个unix时间戳
                                    // 提示闹钟设置完毕:
                                    Toast.makeText(MainActivity.this, "闹钟设置完毕~"+ c.getTimeInMillis(),
                                            Toast.LENGTH_SHORT).show();
                                }
                            }, currentTime.get(Calendar.HOUR_OF_DAY), currentTime
                            .get(Calendar.MINUTE), false).show();
                    btn_cancel.setVisibility(View.VISIBLE);
                    break;
                case R.id.btn_cancel:
                    alarmManager.cancel(pi);
                    btn_cancel.setVisibility(View.GONE);
                    Toast.makeText(MainActivity.this, "闹钟已取消", Toast.LENGTH_SHORT)
                            .show();
                    break;
            }
        }
    }

    然后是闹铃页面的ClockActivity.java

    public class ClockActivity extends AppCompatActivity {
    
        private MediaPlayer mediaPlayer;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_clock);
            mediaPlayer = mediaPlayer.create(this,R.raw.pig);
            mediaPlayer.start();
            //创建一个闹钟提醒的对话框,点击确定关闭铃声与页面
            new AlertDialog.Builder(ClockActivity.this).setTitle("闹钟").setMessage("小猪小猪快起床~")
                    .setPositiveButton("关闭闹铃", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            mediaPlayer.stop();
                            ClockActivity.this.finish();
                        }
                    }).show();
        }
    }
  • 相关阅读:
    【Python3之匿名函数及递归】
    【Python3之模块及包的导入】
    :nth-child和:nth-of-type的区别
    JavaScript ES6中export及export default的区别以及import的用法
    vue中npm run dev运行项目不能自动打开浏览器! 以及 webstorm跑vue项目jshint一直提示错误问题的解决方法!
    SEO优化之HTML代码优化最重要的5个标签
    清除浮动小记,兼容Ie6,7
    JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承
    面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
    纯CSS实现垂直居中的几种方法
  • 原文地址:https://www.cnblogs.com/20193925zxt/p/14910721.html
Copyright © 2020-2023  润新知