安卓源代码修改之framework下面长按power键,修改安卓原生的关机、重启界面(二)
2016-03-15 10:33
337 查看
接着上一篇文章,这篇文章主要说一些,这四个按钮的点击事件。所有的点击事件都是在我自己写的那个Dialog_Activity2那个类中,但是想要把自己写的Activity跟源代码相结合(因为关机重启这类的真正的调用的对象都在源代码的DialogActions.java中的),必须发送广播给这个源代码的类,这样源代码才能接收到你的点击的事件,才能做相应的操作,当然,前提是在你想要发送的源代码中有广播接收器才可以的。
在我的Dialog_Activity2.java中有一个onClick()方法,
public void onClick(View v){
switch (v.getId()) {
case R.id.imageButton1:
//省电模式的按钮
break;
case R.id.imageButton2:
//情景模式的按钮
break;
case R.id.imageButton3:
//重启的按钮,发送广播给DialogActions.java中的广播接收器
//其他三个按钮就是慢慢的移动,直至消失,动画的XML自己写,然后让其他
//三个按 startAnimation即可
break;
case R.id.imageButton4:
//关机的按钮,发送广播给DialogActions.java中的广播接收器
//其他三个按钮就是慢慢的移动,直至消失,动画的XML自己写,然后让其他
//三个按 startAnimation即可
break;
}
}
DialogActions中的广播接收器中:
else if(action.equals(“Global_Reboot”)){ //重启
mWindowManagerFuncs.reboot(true); //源代码中重启的一行代码,直接借用就ok了
}else if(action.equals(“Global_ShutDown”)){ //关机
mWindowManagerFuncs.shutdown(false);////源代码中重启的一行代码,直接借用就ok
}
当然,广播怎么写,忘了的童鞋多多看资料吧~
上面就是重启跟关机的点击事件,还是比较简单的。接下来就是情景模式的点击事件了,我的需求是,点击情景模式之后其他三个按钮同时移动直至消失,并且弹出一个AlertDialog,这个AlertDialog还是单选框,代码如下:
AlertDialog.Builder build = new AlertDialog.Builder(Dialog_Activity2.this);
final String[] mode = {“响铃”,”震动”,”静音”};
build.setSingleChoiceItems(mode, num, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
SharedPreferences.Editor editor=sp.edit();
switch (which) {
case 0:
//发送广播给GlobalActions.java
editor.putInt(“num”, 0); //SharedPreferences存储选择的项
break;
case 1:
//发送广播给GlobalActions.java
editor.putInt(“num”, 1); //SharedPreferences存储选择的项
break;
case 2:
//发送广播给GlobalActions.java
editor.putInt(“num”, 2); //SharedPreferences存储选择的项
break;
}
editor.commit();
dialog.dismiss();
}
});
AlertDialog dialog=build.create();
dialog.show();
是的,在这里我用了SharedPreferences轻型数据库,作用就是,我每次选择情景模式的三个选项之一(”响铃”,”震动”,”静音”)的时候就会在SharedPreferences中存储我选择项的id,以便再一次打开的时候,是记住我上一次的选择的。SharedPreferences的使用,不是很清晰的童鞋也多多查资料~
然后发送广播之后在源代码GlobalActions.java中的广播接收器中:
else if(action.equals(“xiangling”)){
//响铃模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
} else if(action.equals(“zhendong”)){
//振动模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
} else if(action.equals(“jingyin”)){
//静音模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
这三个代码是我自己写的,没有用到源代码的代码,就是自己对AudioManager的熟悉,就直接这么写了三行,然后就ok了,因为我发现源代码中有AudioManager的对象,所以让我往这个方向去想了。
好了,以上就是对这三个按钮的点击事件,省电模式暂时没有需求,所以就没有做,后期做的话再更新!
希望能帮到有需要的童鞋~
以上都是本人按照自己做出来的效果写出来的心得,希望能帮助到有需要的童鞋~~如有雷同纯属巧合!
在我的Dialog_Activity2.java中有一个onClick()方法,
public void onClick(View v){
switch (v.getId()) {
case R.id.imageButton1:
//省电模式的按钮
break;
case R.id.imageButton2:
//情景模式的按钮
break;
case R.id.imageButton3:
//重启的按钮,发送广播给DialogActions.java中的广播接收器
//其他三个按钮就是慢慢的移动,直至消失,动画的XML自己写,然后让其他
//三个按 startAnimation即可
break;
case R.id.imageButton4:
//关机的按钮,发送广播给DialogActions.java中的广播接收器
//其他三个按钮就是慢慢的移动,直至消失,动画的XML自己写,然后让其他
//三个按 startAnimation即可
break;
}
}
DialogActions中的广播接收器中:
else if(action.equals(“Global_Reboot”)){ //重启
mWindowManagerFuncs.reboot(true); //源代码中重启的一行代码,直接借用就ok了
}else if(action.equals(“Global_ShutDown”)){ //关机
mWindowManagerFuncs.shutdown(false);////源代码中重启的一行代码,直接借用就ok
}
当然,广播怎么写,忘了的童鞋多多看资料吧~
上面就是重启跟关机的点击事件,还是比较简单的。接下来就是情景模式的点击事件了,我的需求是,点击情景模式之后其他三个按钮同时移动直至消失,并且弹出一个AlertDialog,这个AlertDialog还是单选框,代码如下:
AlertDialog.Builder build = new AlertDialog.Builder(Dialog_Activity2.this);
final String[] mode = {“响铃”,”震动”,”静音”};
build.setSingleChoiceItems(mode, num, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
SharedPreferences.Editor editor=sp.edit();
switch (which) {
case 0:
//发送广播给GlobalActions.java
editor.putInt(“num”, 0); //SharedPreferences存储选择的项
break;
case 1:
//发送广播给GlobalActions.java
editor.putInt(“num”, 1); //SharedPreferences存储选择的项
break;
case 2:
//发送广播给GlobalActions.java
editor.putInt(“num”, 2); //SharedPreferences存储选择的项
break;
}
editor.commit();
dialog.dismiss();
}
});
AlertDialog dialog=build.create();
dialog.show();
是的,在这里我用了SharedPreferences轻型数据库,作用就是,我每次选择情景模式的三个选项之一(”响铃”,”震动”,”静音”)的时候就会在SharedPreferences中存储我选择项的id,以便再一次打开的时候,是记住我上一次的选择的。SharedPreferences的使用,不是很清晰的童鞋也多多查资料~
然后发送广播之后在源代码GlobalActions.java中的广播接收器中:
else if(action.equals(“xiangling”)){
//响铃模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
} else if(action.equals(“zhendong”)){
//振动模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
} else if(action.equals(“jingyin”)){
//静音模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
这三个代码是我自己写的,没有用到源代码的代码,就是自己对AudioManager的熟悉,就直接这么写了三行,然后就ok了,因为我发现源代码中有AudioManager的对象,所以让我往这个方向去想了。
好了,以上就是对这三个按钮的点击事件,省电模式暂时没有需求,所以就没有做,后期做的话再更新!
希望能帮到有需要的童鞋~
以上都是本人按照自己做出来的效果写出来的心得,希望能帮助到有需要的童鞋~~如有雷同纯属巧合!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories