网阔MZ200A型android设备调用文档

517 阅读3分钟

项目地址:https://github.com/CarpOrange/mz200alibDemo

注:第三、四点需要特别注意遵守

一、 相机

见CameraDemo,可以直接导入cameralib并依赖。

二、 刷卡模块

1、 模块类型

nfc (网上有很多nfc相关文章,如blog.csdn.net/pku_android…)

manifest的配置:

<!--文件读写-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!--读卡-->
<uses-permission android:name="android.permission.NFC"/>

<application
    android:name=".App"

<activity
    android:name=".ui.activity.ICCardActivity"
    android:launchMode="singleTask"
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TAG_DISCOVERED"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED"/>
    </intent-filter>

    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter"/>
</activity>
<activity
    android:name=".ui.activity.IdCardActivity"
    android:launchMode="singleTask"
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>

        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED"/>
    </intent-filter>

    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter"/>

    <intent-filter>
        <action android:name="android.nfc.action.TAG_DISCOVERED"/>
    </intent-filter>
</activity>

2、 ic卡读取

继承NfcActivty实现接口即可,NfcActivity的具体逻辑见源码。如果使用的卡的扇区密码不是默认密码0xFFFFFFFFFFFF,修改NfcActivity的成员变量password为扇区密码即可。可以在NfcActvity的generatePassword ()方法中实现给password赋值的逻辑。

3、 身份证串号读取

继承NfcIdCardActivity实现接口即可,NfcIdCardActivity的具体逻辑见源码。


三、定位

不管使用的什么定位sdk,都要在Application的onCreate中调用LocationHelper.getInstance().locateAtIntervals()。 这样是为了更新gps星历历书,减少偏移等。

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //log工具初始化
        try {
            LogUtil.init();
        } catch (Exception e) {
            e.printStackTrace();
        }

        //每隔一段时间重新发起定位,主要是用来让设备gps模块定位更准,减少漂移
       try {
           LocationHelper.getInstance().locateAtIntervals();
       } catch (Exception e) {
            e.printStackTrace();
       }
    }
}

四、设备关机后完全断电(不损耗车辆电瓶)

在manifest中如下配置即可。

<receiver android:name="com.haoxueche.mz200alib.receiver.ShutdownBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
    </intent-filter>
</receiver>

此功能只对18年8月21之后的设备有效

五、 acc读取

AccManager.getInstance().isAccOn();

六、 imei读取

SystemUtil.getImei(context);

七、序列号读取

DeviceHardwareUtil.SERIAL

八、修改休眠时间(屏幕会关闭)

支持设置系统中有的时长选项,15秒、30秒、1分钟等,其他不在选项中的未测试过。


<!--修改系统设置-->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

//30秒后锁屏
boolean setSucc = SystemUtil.setScreenLockTime(this, 30);

注意,屏幕休眠后cpu会进入低功耗模式,需要在Application中使用WakeLock来保持屏幕休眠后cpu的运行

<!--wakeLock-->
<uses-permission android:name="android.permission.WAKE_LOCK" />

public class App extends Application {
    private WakeLock cpuWakeLock;

    @Override
    public void onCreate() {
        super.onCreate();
        
        //其他操作
       ...

        //保持cpu运转
        PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
        cpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "App");
        cpuWakeLock.acquire();
    }
}


九、修改系统时间

manifest配置,需要是系统app才能获取到以下权限,不然设置失败

<!--设置时间-->
<uses-permission android:name="android.permission.SET_TIME"/>
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>

代码:

//这段代码的效果是把当前系统时间设置为5分钟以前的时间
//设置时间戳 单位:毫秒
boolean setSucc = SystemClock
                .setCurrentTimeMillis(System.currentTimeMillis() - 1000L * 60 * 5);

十、打开系统的桌面app

Intent intent = new Intent();
intent.setClassName("com.android.launcher3", "com.android.launcher3.Launcher");
startActivity(intent);

十一、禁止顶部状态栏下拉

manifest配置(需要系统权限):

<uses-permission android:name="android.permission.STATUS_BAR"/>
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
<uses-permission android:name="android.permission.DISABLE_STATUS_BAR"/>

代码:

// 禁用状态栏
SystemUtil.disableStatusBar(context);

十二、apk文件安装

manifest配置:

<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>

此方法会自动判断app是否有系统权限,如果有会静默安装,否则需要用户点下一步。

InstallUtil.install(this, FileUtil.getRoot() + "Via.apk");


十三、打开系统设置

 Intent intent = new Intent();
 intent.setClassName("com.android.settings","com.android.settings.Settings");
 startActivity(intent);