Unity显示Android手机WIFI强度

Unity通过Jar包调用Android

我们会需要面对下面几个问题,我们一个一个来解决:

  1. 怎样在Android Studio中打Jar包
  2. 怎样打一个Unity使用的Jar包
  3. 怎样在Unity工程中使用这个Jar包

怎样在Android Studio中打Jar包

在Android Studio中打Jar包首先需要保证你的工程可以顺利编译通过,之后有两种方式:

  • 使用命令行运行gradlew clean build -> jar cvf yourJarName.jar -Cbuild/intermediates/classes/release,之后在app文件夹下就会生成一个yourJarName.jar
  • 重新设置build.gradle文件,自动生成jar包
    这里我们主要来看一看第二种方法.
    gradle是一个基于Apachae Ant和Apache Maven概念的项目自动化建构工具.task和project是gradle最主要的东西,所以我们可以建立一个task,调用jar命令帮我们生成jar包,具体代码如下:
//定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹
defmakeJar(String target,String classDir){
exec{
executable"jar"//调用jar
args"cvf",target
args"-C", classDir
args"","."
}
}
//新建一个task,名为buildLib,依赖build(build是一个自带的task)
task buildLib(dependsOn:['build'])<< {
makeJar("class.jar","build/intermediates/classes/release")
}
task buildJar() {
makeJar("ASTest.jar","build/intermediates/classes/release")
}

打开底部任务栏的Terminal,输入gradlew buildLib,执行完之后在你的app文件下就会出现想要的jar包

](http://img.blog.csdn.net/20141219094835078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGpxODQyMzgyMTM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center))

怎样打一个Unity使用的Jar包

使用Android Studio新建一个空工程,首先我们需要将接口class.jar引入到工程libs文件夹下.接口包所在地C:\Program Files\Unity5.2.3\Editor\Data\PlaybackEngines\androidplayer\Variations\mono\Release\Classes\class.jar,工程目录结构如下图:
(按照上一节的方法设置build.gradle文件)
开始编写JAVA代码
UnityTestActivity.java

package com.xys.unitytestactivity;

import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class UnityTestActivity extends UnityPlayerActivity {
 /** Called when the activity is first created. */

 Context mContext = null;
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 mContext = this;
 }

 public static int num = 0;
 public static int GetNum()
 {
 num++;
 return num;
 }

 public int obtainWifiStrength(){
 WifiManager wifi_servicve = (WifiManager) getSystemService(WIFI_SERVICE);
 WifiInfo connectionInfo = wifi_servicve.getConnectionInfo();
 int level = connectionInfo.getRssi();
 return level;
 }
}

UnityTestActivity是主Activity,Unity程序一启动就会调用这个Activity,他是在AndroridManifest.xml中配置的.他需要继承UnityPlayerActivity,就是我们刚刚引入的class.jar包中的接口类.接着我们配置本程序的AndroidManifest.xml,这个很重要,一定要配置.
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xys.unitytestactivity">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"

        android:supportsRtl="true"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <activity android:name=".UnityTestActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

之后按照上一节的打包流程,打出Jar包.
注意:在这有一个坑,需要将build\intermediates\classes\release\com\你的包名\你的工程名 下面的R开头的class文件全部删掉,不然在Unity中使用打包时会报错

怎样在Unity工程中使用这个Jar包

开始创建Unity工程.如图所示,Plugins->Android,将AndroidMinifest.xml放入这一层文件夹并建立res文件夹(下面放打包时需要用到的资源,如APP的图标等)和bin文件夹(放刚刚生成的.jar包)
注意:Jar包的名字可以随便修改,但是jar包里面必须是com\你的包名\你的工程名\你需要的class,否则运行程序后提示找不到类文件

](http://img.blog.csdn.net/20141219094835078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGpxODQyMzgyMTM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center))

在Unity中新建一个Test.cs
Test.cs

using UnityEngine;
using UnityEngine.UI;
using System;

public class Test : MonoBehaviour
{
    private static float xValue;
    private static float yValue;
    private static float zValue;
    public Text myText;
    private String wifiStrength;
    private AndroidJavaClass jc;
    private AndroidJavaObject jo;
    void Start()
    {
        jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Escape))
        {
            Application.Quit();
        }
        xValue = jo.CallStatic<int>("GetNum");
        yValue = jo.Call<int>("obtainWifiStrength");
        ChangeWifiStrength();
    }

    private void ChangeWifiStrength()
    {
        if (wifiStrength != yValue.ToString())
            wifiStrength = yValue.ToString();
        myText.text = string.Format("wifi strength :{0}", wifiStrength);
    }
}

打包注意:Unity中PlayerSetting的Bundle Identifier要与Android工程保持一致,否则无法调用
打包到真机上,现在能够显示WIFI强度了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容