广播接收器—Broadcast Receiver(二)

广播机制在这就不多说了,上一期该说的都说了,这一节主要给出一些例子,仅供参考。

一、来去电拦截

注册接收器

<receiver android:name=".InCallReceiver" android:enabled="true">
			<intent-filter>
				<action android:name="android.intent.action.PHONE_STATE" />
			</intent-filter>
		</receiver>
		<receiver android:name=".OutCallReceiver" android:enabled="true">
			<intent-filter>
				<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
			</intent-filter>
		</receiver>


package mobile.android.call.in.out.receiver;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;

public class InCallReceiver extends BroadcastReceiver
{


	@Override
	public void onReceive(final Context context, final Intent intent)
	{

		//获得电话管理服务,以便获得电话的状态
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Service.TELEPHONY_SERVICE);

		switch (tm.getCallState())
		{
			case TelephonyManager.CALL_STATE_RINGING://响铃
				String incomingNumber = intent
						.getStringExtra("incoming_number");
				Toast.makeText(context, incomingNumber, Toast.LENGTH_LONG).show();
				
				break;
			case TelephonyManager.CALL_STATE_OFFHOOK://接听电话
				Log.d("call_state", "offhook");
				break;

			case TelephonyManager.CALL_STATE_IDLE://挂断电话
				Toast.makeText(context,"close", Toast.LENGTH_LONG).show();

		}

	}
}

package mobile.android.call.in.out.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class OutCallReceiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent)
	{
		String outcomingNumber = intent
				.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
		Toast.makeText(context, outcomingNumber, Toast.LENGTH_LONG).show();
		
	}

}

package mobile.android.call.in.out.receiver;


import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
二、截获屏幕休眠与唤醒

package mobile.android.screen.on.off.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ScreenOnOffReceiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent)
	{
		if (Intent.ACTION_SCREEN_ON.equals(intent.getAction()))
		{
			Log.d("screen", "ok");
			

		}
		else if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction()))
		{
			Log.d("screen", "off");
		}
	}

}
package mobile.android.screen.on.off.receiver;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

public class Main extends Activity
{
	private ScreenOnOffReceiver screenOnOffReceiver;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		screenOnOffReceiver = new ScreenOnOffReceiver();
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction(Intent.ACTION_SCREEN_ON);
		intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
		registerReceiver(screenOnOffReceiver, intentFilter);
	
	}

} 

三、开机自动运行

<receiver android:name="StartupReceiver">
			<intent-filter>
				<action android:name="android.intent.action.BOOT_COMPLETED" />
			</intent-filter>			
		</receiver>

package mobile.android.boot.complete.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class StartupReceiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent)
	{
		Intent mainIntent = new Intent(context, Main.class);
		mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(mainIntent);
		
	}

}

package mobile.android.boot.complete.receiver;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity
{
	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

	}
}

四、显示当前手机电池的当前电量


package mobile.android.battery.changed.receiver;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;

public class Main extends Activity
{
	private TextView tvBatteryChanged;
	private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver()
	{

		@Override
		public void onReceive(Context context, Intent intent)
		{
			if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction()))
			{
				int level = intent.getIntExtra("level", 0);
				int scale = intent.getIntExtra("scale", 100);
				tvBatteryChanged.setText("电池用量:" + (level * 100 / scale) + "%");
			}
		}
	};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tvBatteryChanged = (TextView) findViewById(R.id.tvBatteryChanged);
		registerReceiver(batteryChangedReceiver, new IntentFilter(
				Intent.ACTION_BATTERY_CHANGED));
	}
}

五、自定义广播接收器播放一首音乐

package com.example.lesson21_broadcastreceiver;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainBroadcastReceiver extends Activity {
	private Button BroadcastButton;
	private ImageView myImageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main_broadcast_receiver);
		myImageView = (ImageView)findViewById(R.id.myImageView);
		BroadcastButton = (Button)findViewById(R.id.BroadcastButton);
		BroadcastButton.setOnClickListener(new BroadcastButtonListener());
		
	}

	class BroadcastButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent = new Intent().
					setAction("android.basic.lesson21.HelloYaoYao").putExtra("yaoyao", "yaoyao is a person");
			MainBroadcastReceiver.this.sendBroadcast(intent);
		}
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main_broadcast_receiver, menu);
		return true;
	}

}

package com.example.lesson21_broadcastreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.util.Log;

public class HelloBroadcastReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		//Log.e("HelloBroadcastReceiver","BOOT_COMPLETED");
		//Log.e("HelloBroadcastReceiver",""+intent.getAction());
		if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
			Log.e("HelloBroadcastReceiver", "BOOT_COMPLETED");
		}
		if(intent.getAction().equals("android.basic.lesson21.HelloYaoYao")){
			Log.e("HelloBroadcastReceiver","Say hello to yaoyao!!!!!!!");
			Log.e("HelloBroascastReceiver",intent.getStringExtra("yaoyao"));
		}
		//播放一首音乐
		MediaPlayer.create(context, R.raw.everybodyhurts).start();
	}

}

 <receiver 
            android:name=".HelloBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.basic.lesson21.HelloYaoYao"/>
                </intent-filter>
            </receiver>

五个小例子,可以借鉴参考一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值