最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库.

  a.Android版

  1.通过C#直接读取,下面的GetBatteryLevel()方法

  1. int GetBatteryLevel()
  2. {
  3. try
  4. {
  5. string CapacityString = System.IO.File.ReadAllText("/sys/class/power_supply/battery/capacity");
  6. return int.Parse(CapacityString);
  7. }
  8. catch (Exception e)
  9. {
  10. Debug.Log("Failed to read battery power; " + e.Message);
  11. }
  12. return -1;
  13. }
  14. }

  b.iOS版

  iOS需要用到xcode编写.a静态链接库

  1.在xcode编写.mm文件,实现C++调用iOS的API得到手机电量,部分代码如下:

  

    float getiOSBatteryLevel()
    {
      [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
      return [[UIDevice currentDevice] batteryLevel];
    }

  

  2.将上面.mm编译好的.a文件放入Unity工程Assets-Plugins-iOS下(路径不能错);在C#中使用下面的方法调用:

[ DllImport( "__Internal" )]
private static extern float getiOSBatteryLevel(); 在C#调用此函数就可获得iOS电量

  至于网络状况,Unity自带API就可以获得

  Application.interReachability 

NetworkReachability.NotReachability网络不可达
NetworkReachability.ReachableViaCarrierDataNetwork 通过运营商数据网络可达
NetworkReachability.ReachableViaLocalAreaNetwork 通过局域网络可达(wifi)
 
====================== 部分安卓手机不能使用,因为厂家可能修改文件结构,可以考虑下面的方法===============
在unity工程建立安卓通信,在安卓侧监听电量,主要使用如下代码
在主Activity里加入监听
@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手机系统电量及网络状况的更多相关文章

  1. Web程序员开发App系列 - 调试Android和IOS手机代码(补图)

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  2. Unity在Android和iOS中如何调用Native API

    本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调 ...

  3. 部分Android或IOS手机拍照后照片被旋转的问题

    1.我们平时手机拍的照片,传到电脑后,使用Photoshop或者其它图片浏览工具打开时,发现图片是被转过的.可是Windows上预览却是正的.其实原因是部分Android或IOS手机拍照后,将图片角度 ...

  4. unity基础开发----Unity获取PC,Ios系统的mac地址等信息

    在软件开发中可以会用到mac地址作为,设备的唯一标示,我们也可以通过unity获取,经测试pc,ios都可以但是安卓没有获取到. 代码如下: using UnityEngine; using Syst ...

  5. Android各大手机系统打开权限管理页面

    最近项目上比较忙,终于有空闲时间写写东西了. 相信做过Android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框. 而且用户一旦不小心点了拒绝,下次就不再 ...

  6. Android之开启手机系统自带铃声

    /** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...

  7. 带中横线的日期格式在iOS手机系统上 转换时间戳NaN问题

    类似于 '2019-04-01 14:13:00' 这样的日期格式转换时间戳在iOS手机上是无法转换的,需要先处理日期格式成 '2019/04/01 14:13:00' var str = '2019 ...

  8. 使用Fiddler完成Android和IOS手机抓包Https

    实现原理 Fiddler是PC端有名的HTTP抓包工具,利用它我们可以轻松实现对主机上所有http/https网络请求的捕捉.查看和修改操作. 同时它也提供了代理模式,其它主机由它代理发送的网络请求也 ...

  9. android和ios的系统特性区别

    1.  删除:android是长按,ios为滑动/或者进入编辑模式 2.  android:应用内返回键,保证用户停留在应用程序中:硬件返回键可以让用户退出应用程序 3.  剪切/粘贴/选择等文本操作 ...

随机推荐

  1. android 学习路线

    转载来源:https://blog.csdn.net/lixuce1234/article/details/77947405 jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图 ...

  2. 二叉树BinTree4种遍历及其应用

    前序遍历 template<class T> void BinTree<T>::PreOrder(BinTreeNode<T>*subTree){ //前序遍历以s ...

  3. 关于自带的sql developer修改java.exe版本的解决办法

    第一次安装oracle11gR2后,就很好奇的点了一下,当点击应用程序开发下的sql developer后,就弹出一个窗口,要选择一个java.exe的路径,我就讲本机中的JDK1.7下的java.e ...

  4. NGUI的Tween动画的使用

    一,在创建Tween有,alpha,color,width,height,position,rotation,scale和transfrom这几种动画类型 1>alpha:颜色由浅变深(透明度) ...

  5. call和apply,函数伴侣

    Predefined:js中的this指向直接运行上下文. call和apply是ECMASCRIPT 3在函数原型上所定义的方法,目的在于改变或指定this的指向,从而改变函数直接执行上下文.两者的 ...

  6. 二 shell 基础

    一   文件的 权限基础 文件有三类权限   user,group,other, 权限分为 r w x  代表数字分别为 4 2 1 修改权限命令 chmod 权限还有特殊权限,在执行的时候代表某一身 ...

  7. CSAW CTF Qualification Round 2018 - shell->code

    原题 Linked lists are great! They let you chain pieces of data together. nc pwn.chal.csaw.io 9005 链接:h ...

  8. java 一个数组的长度

    package java03; /* *如何获取数组长度 : * 格式: * 数组名称.length * * 这会得到一个int数字,代表数组的长度 * * 数组一旦创建,程序运行期间,长度不可改变 ...

  9. HttpRunnerManager安装部署(centos7)

    一.安装python3环境 参考 二.安装依赖环境 根据根目录requirements.txt文件安装依赖,可以使用pip安装 #pip3 install -r requirements.txt 会遇 ...

  10. mysql小知识

    char(10): 换行符 char(13): 回车符 UPDATE tablename SET field = REPLACE(REPLACE(field, CHAR(10), ”), CHAR(1 ...