Unity获取Android和iOS手机系统电量及网络状况
最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库.
a.Android版
1.通过C#直接读取,下面的GetBatteryLevel()方法
- int GetBatteryLevel()
- {
- try
- {
- string CapacityString = System.IO.File.ReadAllText("/sys/class/power_supply/battery/capacity");
- return int.Parse(CapacityString);
- }
- catch (Exception e)
- {
- Debug.Log("Failed to read battery power; " + e.Message);
- }
- return -1;
- }
- }
b.iOS版
iOS需要用到xcode编写.a静态链接库
1.在xcode编写.mm文件,实现C++调用iOS的API得到手机电量,部分代码如下:
2.将上面.mm编译好的.a文件放入Unity工程Assets-Plugins-iOS下(路径不能错);在C#中使用下面的方法调用:
[ DllImport( "__Internal" )]
private static extern float getiOSBatteryLevel(); 在C#调用此函数就可获得iOS电量
至于网络状况,Unity自带API就可以获得
Application.interReachability
NetworkReachability.ReachableViaLocalAreaNetwork 通过局域网络可达(wifi)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SystemUtil.registerBatteryReceiver(this);
}
监听方法
public static int getBatteryState() {
return batteryState;
}
public static void registerBatteryReceiver(Context mainContext) {
if (batteryLevel == 0) {
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
batteryLevel = intent.getIntExtra("level", 0);
int curbatteryState = intent.getIntExtra("status", 0);
SetNewBatteryState(curbatteryState);
}
}
};
mainContext.registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
}
Unity获取Android和iOS手机系统电量及网络状况的更多相关文章
- Web程序员开发App系列 - 调试Android和IOS手机代码(补图)
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Unity在Android和iOS中如何调用Native API
本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调 ...
- 部分Android或IOS手机拍照后照片被旋转的问题
1.我们平时手机拍的照片,传到电脑后,使用Photoshop或者其它图片浏览工具打开时,发现图片是被转过的.可是Windows上预览却是正的.其实原因是部分Android或IOS手机拍照后,将图片角度 ...
- unity基础开发----Unity获取PC,Ios系统的mac地址等信息
在软件开发中可以会用到mac地址作为,设备的唯一标示,我们也可以通过unity获取,经测试pc,ios都可以但是安卓没有获取到. 代码如下: using UnityEngine; using Syst ...
- Android各大手机系统打开权限管理页面
最近项目上比较忙,终于有空闲时间写写东西了. 相信做过Android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框. 而且用户一旦不小心点了拒绝,下次就不再 ...
- Android之开启手机系统自带铃声
/** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...
- 带中横线的日期格式在iOS手机系统上 转换时间戳NaN问题
类似于 '2019-04-01 14:13:00' 这样的日期格式转换时间戳在iOS手机上是无法转换的,需要先处理日期格式成 '2019/04/01 14:13:00' var str = '2019 ...
- 使用Fiddler完成Android和IOS手机抓包Https
实现原理 Fiddler是PC端有名的HTTP抓包工具,利用它我们可以轻松实现对主机上所有http/https网络请求的捕捉.查看和修改操作. 同时它也提供了代理模式,其它主机由它代理发送的网络请求也 ...
- android和ios的系统特性区别
1. 删除:android是长按,ios为滑动/或者进入编辑模式 2. android:应用内返回键,保证用户停留在应用程序中:硬件返回键可以让用户退出应用程序 3. 剪切/粘贴/选择等文本操作 ...
随机推荐
- [Linux] 023 RPM 包校验与文件提取
1. RPM 包校验 $ rpm -V 已安装的包名 选项 释义 -V (verify) 校验指定 RPM 包中的文件 (1) 验证内容中的 8 个信息的具体内容如下 信息名称 释义 S 文件大小是否 ...
- df认识
import pandas as pd #自己创建一个df df = pd.DataFrame({ ,,], 'col2':["zs",'li','zl'], 'col3':[3. ...
- LeetCode #938. Range Sum of BST 二叉搜索树的范围和
https://leetcode-cn.com/problems/range-sum-of-bst/ 二叉树中序遍历 二叉搜索树性质:一个节点大于所有其左子树的节点,小于其所有右子树的节点 /** * ...
- [暑假集训Day2T1]种树
标算是贪心,我写了个差分约束????? 设dist[i]表示1-i号土地种的树的总棵数,考虑以下几种约束条件: 1)dist[y]>=dist[x]+z,即x号土地至y号土地间至少种了z棵树 2 ...
- python学习第五天流程控制分支if和循环while
所有的逻辑结构围绕分支和循环进行,比如登陆注册,支付成功与否等等,下面讲述分支if用法和while用法 if age>30: print("www.96net.com.cn" ...
- elasticsearch 深入 —— 相关度控制
控制相关度 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库, 只需检查文档(或关系数据库里的行)是否与查询匹配. 布尔的是/非匹配是全文搜索的基础,但不止如此,我们还要知道每个文档与查询的相 ...
- while例子 求1到100的和
- Helm安装服务端tiller出现的问题
一.首先,我是看尚硅谷视频跟着操作出现了问题,视频链接:https://www.bilibili.com/video/av66617940/?p=58 再说下大概的部署流程 Helm 部署 Helm ...
- 解决图片插入word文档后清晰度降低的问题
解决图片插入word文档后清晰度降低的问题 在默认情况下,word程序会自动压缩插入word文档中的图片以减小整个word文档的.当我们需要插入word文档中的图片保持原始清晰度时,可以通过设置wor ...
- c++消息中间件
ZeroMQ ActiveMQ-CPP 另外 ZeroMQ 的作者用 C 重构了一套.改名叫:nanomsg ZeroMQ:https://www.cnblogs.com/rainbowzc/p/33 ...