Android 广播介绍与service一起使用案例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android 广播介绍与service一起使用案例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6090字,纯文字阅读大概需要9分钟。
内容图文
![Android 广播介绍与service一起使用案例](/upload/InfoBanner/zyjiaocheng/1243/b09e91a27861443fb755ea545520f03b.jpg)
1、案例
定义广播,注册广播,发送广播,最后注销广播
1.1、定义广播
private BroadcastReceiver scanReceiver = new BroadcastReceiver(){ @Override publicvoid onReceive(Context context, Intent intent) {if (intent.getAction().equals(BARCODE_ACTION)) { String data = intent.getStringExtra(BARCODE_ACTION_DATA); Log.e("MainActivity", "---------------------data-------------"+data); if(data!=null){ setText(data); manager.stopBarcodeScan(); } } } };
1.2、注册广播
// 注册广播接收器 IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("com.example.rfid_sdk_as.receiver.action"); registerReceiver(scanReceiver,intentFilter);
1.3、发送广播
Intent intent = new Intent(BARCODE_ACTION); sendBroadcast(intent);
1.4、注销广播
if(scanReceiver!=null){ unregisterReceiver(scanReceiver); }
2、广播与service一起使用
2.1、定义广播
package com.example.rfid_sdk_as; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.RemoteException; import android.util.Log; import com.hyc.api.DeviceManagement; public class BarCodeReceiver extends BroadcastReceiver { publicstaticfinal String RECEIVER_ACTION = "com.android.server.scannerservice.broadcastbl"; private DeviceManagement deviceManagement; private BarCodeReceiver receiver; publicvoid setDeviceManagement(DeviceManagement deviceManagement){ this.deviceManagement = deviceManagement; } publicvoid setReceiver(BarCodeReceiver receiver){ this.receiver = receiver; } @Override publicvoid onReceive(final Context context, final Intent intent) { Log.e("MainActivity", "---------------------接收到广播-------------"); String action = intent.getAction(); if (RECEIVER_ACTION.equals(action)) { String data = intent.getStringExtra("scannerdata"); Log.e("MainActivity", "-------------------data=" + data); if(deviceManagement!=null){ BarCodeData.Stub barCodeData = new BarCodeData.Stub() { @Override publicvoid GetBarCodeData(String msg, String data) throws RemoteException { Log.e("MainActivity", "扫描状态:" + msg + "\t扫描数据:" + data); intent.putExtra("scannerdata",data); context.sendBroadcast(intent); } }; deviceManagement.startBarcodeScan(barCodeData); } } } }
2.2、创建service
package com.example.rfid_sdk_as; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.support.annotation.Nullable; import android.util.Log; import com.hyc.api.DeviceManagement; import com.hyc.bean.RFIDData; import com.hyc.bean.TagData; import java.util.List; public class APPService extends Service { privatestaticfinal String TAG = "ServerService"; private DeviceManagement deviceManagement = null; BarCodeReceiver receiver = null; publicstaticfinal String RECEIVER_ACTION = "com.example.rfid_sdk_as.receiver.action"; @Nullable @Override public IBinder onBind(Intent intent) { returnnull; } @Override publicvoid onCreate() { super.onCreate(); deviceManagement = new DeviceManagement(this); receiver = new BarCodeReceiver(); receiver.setDeviceManagement(deviceManagement); receiver.setReceiver(receiver); registerReceiver(receiver,new IntentFilter(BarCodeReceiver.RECEIVER_ACTION)); Log.i(TAG,"--------------start service"); } @Override publicvoid onDestroy() { super.onDestroy(); deviceManagement.exit(); if(receiver!=null){ unregisterReceiver(receiver); } Log.i(TAG,"--------------stop service"); } }
2.3、serviceManager
package com.example.rfidlibrary; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import com.example.rfid_sdk_as.AIDLRFIDData; import com.example.rfid_sdk_as.AIDLTagData; import com.example.rfid_sdk_as.BarCodeData; import com.example.rfid_sdk_as.IAPPServiceRemoteBinder; import com.example.rfid_sdk_as.InitDeviceCallback; import java.util.List; public class RFIDReaderManager { private static final String TAG = "RFIDReaderManager"; privatestaticfinal String PACKAGE = "com.example.rfid_sdk_as"; privatestaticfinal String BIND_ACTION = "com.example.rfid_sdk_as.APPService"; private IAPPServiceRemoteBinder binderService; privatestatic Context mContext; privatestatic RFIDReaderManager mManager; private RFIDReaderServiceConnectListen mListener; publicstatic RFIDReaderManager instance(Context context) { Log.i(TAG, "------------------instance-----------------"); mContext = context; if (mManager != null) { return mManager; } else { mManager = new RFIDReaderManager(); } return mManager; } publicvoid serviceConnectListen(RFIDReaderServiceConnectListen listener) { Log.i(TAG, "---------------------ServiceConnect"); mListener = listener; Intent it = new Intent(); it.setAction(BIND_ACTION); it.setPackage(PACKAGE); // it.setComponent(new ComponentName(PACKAGE, BIND_ACTION)); mContext.bindService(it, mserviceConnection, mContext.BIND_AUTO_CREATE); } publicvoid unbind(){ Log.i(TAG, "---------------------unbind"); if(mserviceConnection!=null){ mContext.unbindService(mserviceConnection); } binderService = null; mListener.disConnect(); } ServiceConnection mserviceConnection = new ServiceConnection() { @Override publicvoid onServiceDisconnected(ComponentName name) { unbind(); } @Override publicvoid onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "---------------------onServiceConnected"); binderService = IAPPServiceRemoteBinder.Stub.asInterface(service); mListener.connected(); } }; publicinterface RFIDReaderServiceConnectListen{ publicvoid connected(); publicvoid disConnect(); } }
2.4、service调用
RFIDReaderManager manager = RFIDReaderManager.instance(this); manager.serviceConnectListen(new RFIDReaderManager.RFIDReaderServiceConnectListen() { @Override publicvoid disConnect() { // TODO Auto-generated method stub } @Override publicvoid connected() { // TODO Auto-generated method stu } });
上面是监听到service,然后 调用service中的方法使用。
原文:https://www.cnblogs.com/zoro-zero/p/12403874.html
内容总结
以上是互联网集市为您收集整理的Android 广播介绍与service一起使用案例全部内容,希望文章能够帮你解决Android 广播介绍与service一起使用案例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。