当前位置: 首页> 文旅> 旅游 > php网站商城源码_网盟推广是什么意思_域名是什么意思呢_长春做网站公司长春seo公司

php网站商城源码_网盟推广是什么意思_域名是什么意思呢_长春做网站公司长春seo公司

时间:2025/8/23 16:06:32来源:https://blog.csdn.net/zouxin_88/article/details/142639664 浏览次数:0次
php网站商城源码_网盟推广是什么意思_域名是什么意思呢_长春做网站公司长春seo公司

在Unity使用低功耗蓝牙通信(BLE)需要用到设备的位置信息。但是调用Input.location.Start()程序会闪退。

解决办法:调用原生安卓接口。 

参见《Unity2021通过aar调用Android方法》编写一个aar插件gpsplugin,在插件中提供获取GPS位置的接口StartGPSLocation,插件代码如下

package com.example.gpsplugin;import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;public class GPSPluginInstance {private LocationManager locationManager;private LocationListener locationListener;private static final int REQUEST_LOCATION_PERMISSION = 1;double latitude = 0.0;double longitude = 0.0;public int Add(int i, int j) {return i + j;}private static Activity unityActivity;public static void receiveUnityActivity(Activity tActivity) {unityActivity = tActivity;}public void Toast(String msg) {Toast.makeText(unityActivity, msg, Toast.LENGTH_SHORT).show();}public void StartGPSLocation() {// 初始化 LocationManagerlocationManager = (LocationManager) unityActivity.getSystemService(Context.LOCATION_SERVICE);// 创建 LocationListenerif(locationListener == null){locationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {if (location != null) {latitude = location.getLatitude();longitude = location.getLongitude();}}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// 状态改变时调用}@Overridepublic void onProviderEnabled(String provider) {// 提供者启用时调用}@Overridepublic void onProviderDisabled(String provider) {// 提供者禁用时调用}};}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locationListener);}
}

AndroidManifest.xml中添加蓝牙和位置权限(注意Android12以上和之前的版本不一样)

  <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /><uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><uses-permission android:name="android.permission.BLUETOOTH"/><uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

Unity代码,在使用Input.location.Start()的地方替换成StartGPSLocation就行了

public class BLEBluetoothGunMgr : MonoBehaviour
{void Start(){InitializePlugin("com.example.gpsplugin.GPSPluginInstance");}public void GetPos(){   //Input.location.Start()StartGPSLocation();}void InitializePlugin(string pluginName){unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");_pluginInstance = new AndroidJavaObject(pluginName);if (_pluginInstance == null){Debug.Log("Plugin Instance Error");}_pluginInstance.CallStatic("receiveUnityActivity", unityActivity);}public void Toast(){if (_pluginInstance != null){_pluginInstance.Call("Toast", "Hi,from Unity");}}public void StartGPSLocation(){if (_pluginInstance != null){_pluginInstance.Call("StartGPSLocation");}}
}

关键字:php网站商城源码_网盟推广是什么意思_域名是什么意思呢_长春做网站公司长春seo公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: