几个system services

来源:互联网 发布:淘宝拿货网 编辑:程序博客网 时间:2024/05/18 21:40

1、示例演示ALARM_SERVICE、KEYGUARD_SERVICE、POWER_SERVICE的用法

1)MainActivity.java

/** * 在onCreate设置新闹铃 * 点击按钮打开手机内置Clock,可设置新闹铃 */public class MainActivity extends Activity {PendingIntent mPendingIntent;AlarmManager mAlarmManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);//在广播中启动新Activity,在新Activity启动闹铃mPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(AlarmReceiver.ACTION_ALARM_ACTIVITY).putExtra("msg", "Time's up!"), 0);CheckBox checkBox = (CheckBox) findViewById(R.id.btn_on_off);checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){buttonView.setText("已打开");mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+10000L, mPendingIntent);}else{buttonView.setText("未开启");mAlarmManager.cancel(mPendingIntent);}}});}public void onClick(View v){switch (v.getId()) {case R.id.btn_callAlarmClock://从一个Activity打开另一个ActivitystartActivity(new Intent(AlarmClock.ACTION_SET_ALARM));break;}}}
2)AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {private static final String TAG = AlarmReceiver.class.getSimpleName();public static final String ACTION_ALARM_ACTIVITY = "action.alarm.activity";@Overridepublic void onReceive(Context context, Intent intent) {if(ACTION_ALARM_ACTIVITY.equals(intent.getAction())){Log.d(TAG, intent.getStringExtra("msg"));Intent intent2 = new Intent(context, MyActivity.class);intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent2);}}}
3)MyActivity.java

/** * 1、在onCreate启动闹铃 * 2、点击按钮可选择关闭闹铃 */public class MyActivity extends Activity {private MediaPlayer player;PowerManager.WakeLock wl;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_me);/*1*/player = new MediaPlayer();try {/*2*/player.setDataSource(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));/*3*/player.prepare();player.setLooping(true);/*4*/player.start();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//解锁屏幕KeyguardManager km = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);          KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");          kl.disableKeyguard();//点亮屏幕并保持PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "MyWakeLock");wl.acquire();}public void onClick(View v){switch (v.getId()) {case R.id.btn:new AlertDialog.Builder(this).setTitle("ֹͣ是否关闭闹钟?").setPositiveButton("关闭", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {player.stop();}}).setNegativeButton("继续", null).show();break;case R.id.btn_release:wl.release();break;default:break;}}}

4)activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    xmlns:android="http://schemas.android.com/apk/res/android">    <Button         android:id="@+id/btn_callAlarmClock"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="打开手机内置时钟"        android:onClick="onClick"/>    <CheckBox         android:id="@+id/btn_on_off"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="未开启"        android:checked="false"/></LinearLayout>
5)activity_me.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    xmlns:android="http://schemas.android.com/apk/res/android">    <Button         android:id="@+id/btn"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="onClick"        android:text="关闭"/>    <Button         android:id="@+id/btn_release"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="onClick"        android:text="release"/></LinearLayout>
6)AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.qinuli.alarmtest"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="9"        android:targetSdkVersion="19" />    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>    <uses-permission android:name="android.permission.WAKE_LOCK"/>    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>        <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.qinuli.alarmtest.MainActivity"            android:label="@string/app_name"             android:launchMode="singleTask">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver android:name="com.qinuli.alarmtest.AlarmReceiver">            <intent-filter>                <action android:name="action.alarm.activity"/>                <action android:name="android.intent.action.BOOT_COMPLETED"/>            </intent-filter>        </receiver>        <activity android:name="com.qinuli.alarmtest.MyActivity"></activity>    </application></manifest>

0 0