[安卓] 15、用NFC解锁手机并自动打开应用
2015-11-02 13:49
393 查看
[b]最近[/b]接到一个项目:将手机放到一个带有NFC卡的底座上手机会自动解锁,然后打开相应的应用
本人用:杭州公交通用卡做为NFC卡+Coolpad手机进行试验
效果如下:
1、手机本身带有图案锁,输对图案才能解锁
2、Coolpad带有NFC功能
3、把手机内的所有正在运行的应用清空
4、关闭手机(目前处于锁住状态)
5、将NFC卡靠近
6、自动解锁+启动应用
注:我用华为的手机无法实现突破锁屏、打开应用的效果
工程核心代码
整个代码比较简单:(新建一个工程)在AndroidManifest.xml加入uses-feature和permission
同时还要在相应的activity中加入intent-filter,这里注意一定要加:<category android:name="android.intent.category.DEFAULT" />
Activity中也比较简单——
onCreate中检测硬件是否支持和是否打开NFC
onResume中通过getIntent().getAction()获取当前的action然后显示在UI的文本显示区中
第34-48行是冲破图案锁,电量屏幕用的
资源链接
Android 解屏幕锁与点亮屏幕(来电时效果)
android之android.intent.category.DEFAULT的用途和使用
Android NFC开发概述(作者找了很多网上的NFC资料,可参考,有疏漏)
Android NFC 开发实例(一个简单的demo,我试了几下有点小问题,可参考)
本工程下载地址:http://pan.baidu.com/s/1c04ries
@beautifulzzzz
2015-11-02 持续更新中~
本人用:杭州公交通用卡做为NFC卡+Coolpad手机进行试验
效果如下:
1、手机本身带有图案锁,输对图案才能解锁
2、Coolpad带有NFC功能
3、把手机内的所有正在运行的应用清空
4、关闭手机(目前处于锁住状态)
5、将NFC卡靠近
6、自动解锁+启动应用
注:我用华为的手机无法实现突破锁屏、打开应用的效果
工程核心代码
整个代码比较简单:(新建一个工程)在AndroidManifest.xml加入uses-feature和permission
同时还要在相应的activity中加入intent-filter,这里注意一定要加:<category android:name="android.intent.category.DEFAULT" />
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.beautifulzzzz.nfc_test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <!-- see http://www.developer.com/ws/android/nfc-programming-in-android.html for reference (note that the minimum API version must be set as 10 in build.gradle (Module: app) for this to work, and that classes being used from the nfc package require a minimum API version 14): --> 16 <uses-feature 17 android:name="android.hardware.nfc" 18 android:required="true" /> 19 <uses-permission android:name="android.permission.NFC" /> 20 21 <uses-permission android:name="android.permission.WAKE_LOCK"/> 22 <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=".Activity_Main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 37 <intent-filter> 38 <action android:name="android.nfc.action.TAG_DISCOVERED" /> 39 <category android:name="android.intent.category.DEFAULT" /> 40 </intent-filter> </activity> </application> </manifest>
Activity中也比较简单——
onCreate中检测硬件是否支持和是否打开NFC
onResume中通过getIntent().getAction()获取当前的action然后显示在UI的文本显示区中
第34-48行是冲破图案锁,电量屏幕用的
public class Activity_Main extends Activity { NfcAdapter nfcAdapter; TextView promt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ui_main); promt = (TextView) findViewById(R.id.promt); // 获取默认的NFC控制器 nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { promt.setText("设备不支持NFC!"); System.out.println("设备不支持NFC!"); finish(); return; } if (!nfcAdapter.isEnabled()) { promt.setText("请在系统设置中先启用NFC功能!"); System.out.println("请在系统设置中先启用NFC功能!"); finish(); return; } promt.setText("正常启用APP!"); System.out.println("正常启用APP!"); } @Override protected void onResume() { super.onResume(); promt.setText(getIntent().getAction()); System.out.println("正常启用APP!"); PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE); //获取电源管理器对象 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright"); //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag wl.acquire(); //点亮屏幕 wl.release(); //释放 KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //得到键盘锁管理器对象 KeyguardLock kl = km.newKeyguardLock("unLock"); //参数是LogCat里用的Tag kl.disableKeyguard(); //解锁</pre><br><br> } }
资源链接
Android 解屏幕锁与点亮屏幕(来电时效果)
android之android.intent.category.DEFAULT的用途和使用
Android NFC开发概述(作者找了很多网上的NFC资料,可参考,有疏漏)
Android NFC 开发实例(一个简单的demo,我试了几下有点小问题,可参考)
本工程下载地址:http://pan.baidu.com/s/1c04ries
@beautifulzzzz
2015-11-02 持续更新中~
相关文章推荐
- Nginx开启Gzip压缩大幅提高页面加载速度
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password:YES)错误
- 跟我一起学MFC–【目录】
- WebSocket 注解 (一)
- file_get_content、fsockopen和curl之间的优缺点
- VS2013运行时提醒签名错误
- debian 163源
- Virtualbox WDDM 用户模式显示驱动之OpenAdapter
- CGridCtrl设置行列不可拉伸
- Android之路-启程2:Android开发环境简介以及编写第一个应用程序“HelloWorld”
- 【C语言】数据结构――动态顺序表
- h5 轮播图
- Python--函数return后面的语句不执行
- PHP 常用设计模式 总结
- ASP.NET Identity Authentication
- oracle跨库数据库link及触发器
- 关于从activity跳转到fragment里面的问题
- [LeetCode]52. Bulls and Cows猜数字游戏
- 记一次IIS Express 之经典模式与集成模式切换
- window下从python开始安装科学计算环境