实时定位,已经成为运用必备才能之一,尤其是导航运用,更需要快速精确定位用户实时方位。
华为定位服务可以赋予运用程序快速、精准地获取用户方位信息的才能,一起定位服务助力全球开发者结束个性化地图呈现与交互,全面提升运用android平板电脑价格的LBS体会。
下面为您具体解析,华为定位android手机服务与地图服务怎样结束运用实时定位。
预期功用
获取人体肠道结构图部位称号实时定位,而且在地图上闪现方位点,初度发动跳转当时方位点,而且方位改动当时方位点和地图视角随之改RTC动。
运用才能
华为定位服务: 基础定位
华为地图服务:android是什么手机牌子地图闪现
结束原理
运用华为定位服务获取实时方位,在地图上闪现“我的方位软件库”按钮,在方位改动http 404时,跳转地android电子市场图到当时定位。
准app下载备作业
AGC账号注册,项目创建
1. 注册成为开发者
注册地址:
developer.huawei.com/cgoogle服务结构on人体接受的最大电压sumer/cn…
2. 创建运用,人头攒动的近义词增加sha25google浏览器6,翻开map/site开关,下载json文件
developer.huawei.com/consumer/cn…
3. 装备android studio工程
- 将“agconnect-services.json”文google地球件拷贝到运用级根目录下
在“allprojects > repositories”中装备HMS Core Shttp署理DK的Maven仓地址。
在“buildscripthttp 404 > repositories”中装备HMS Core SDK的Maven仓地址。
如果App中增加了“agconnect-sapp下载ervices.json”文件则需要在“bu软件库蓝奏云ildscript > dependencies”中增加agcp装备。
buiRTCldscript {
repositories {
maven { url 'https://developer.huawei.com/repo软件/' }
google()
jcenter()
}
dependencies {
classjson格局怎样翻开path 'com.android下载安装android.tools.build:gradle:3.3.2'
classpath 'com.huawei.agcohttp署理nnect:agcpapprove:1.3.1.300'
}
}
allprojects {
repositories {
maven { u人头攒动的近义词rl 'https://developer.huawei.com/json字符串repo/' }
google()
jcenter()
}
}
-
在“dependencies ”中增加如下编译依托
dependencies {
implementation ‘com.huawei.hms:maps:{version}’
imp软件商铺安装lementation ‘com.huawei.hms:location:{version}’
} -
在文件头增加装备
applgoogle地球y plugin: ‘com.huawei.agconnect’
-
在android中装备签名。将生成签名证书指纹生成的签名文件复制到您工程的app目录下,并在“build.gradgoogle服务结构le”文件中装备签名
signingConfigs {
release {
// 签名证书
storgoogle空间eFile file(“.“)
// 密钥库口令
storePRTCassword “json是什么意思”
// 别号
keyAlias “json格局怎样翻开”
// 密钥口令
keyPassword “******”
v2SignjsoningEnabled true
v2SigningEnaapp下载bled true
}
}buildTypes {
release {
minifyEnRTCabled false
proguardFiles getDefaultProguahttp署理rdFile人体成分剖析(‘proguard-android.txt’), ‘proguard-rules.pro’
debuggable true
}
debugoogle空间g {
debuggable true
}
}
要害代码结束
-
编写一个service 获取实时定位。
public classhttp 404 LocationService extends Service {
private final String TAG = this.getClass().getSappointmentimpleName(); Listjson接口回来错误&JSONlt;ILocationChandroid体系angedLister> locagoogle谷歌查找主页tionChangedLisapplet = new ArrayList<>(); // location private FusedLocationProviderClient fusedLocationProviderandroid平板电脑价格Client; private LocationRequhttp://www.baidu.comest mLocationRequest; private final LocationCallback mLocationCallback =JSON new LocationCallb人头攒动的读音ack() { @Overri软件商铺安装de public void onLocationResult(LocationResult locationResult) { super.onLocationResulAPPt(locationResult); locationResult.getLocations(); Log.d(TAG, "onLocationRes软件商铺安装ult: " + locationResult); Location location = location软件工程Resulthttp署理.getLohttp协议cations().get(0); Log.w(Tandroid的drawable类AG, "onLocationResult:Latitude " + lhttp://www.baidu.comocation.getLatitude人体接受的最大电压()); Log.w(TAG, "onLocationResult:Lohttp署理ngitude " + location.getLongitude()); for (ILocationChangedLister logoogle翻译cationChanged : loc人体接受的最大电压ationappreciateChan人体接受的最大电压gedList) { locationChanged.locationChangjson格局ed(new LatLng(lo软件应用cation.getLatitude(), location.getLongitude())); } } @Override public vo让天秤倒追的星座id onLocat人头攒动的读音ionAvailability(LocationAvailability locationAvailability) { super.onLocationAvailability(loAPPcationAvailability); Log.dgoogleplay(TAG, "onLocationAvailability: " + locationAvailability.toAPPString()); } }; private final MyBinder binder = new MyBinder(); private final Random generator = n闰土刺猹图片ew Random(); @Nullable @Override public IBinder onBind(Intent intent) { return binder; } @Override publi软件工程c void onCreate() { Log.i("DemoLog", "TestService -> onCreate, Thread: " + Thread.currentThread().getName()); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int shttp 404tartId) { Log.i("DemoLog", "TestS软件商铺ervice -> onStartCommand, startId: "json字符串 + startId + ", Thread: " + Thread.currentThread().getName()json文件是干什么的); return START_NOT_STICKY; } @Override public boolean onUnbind(Intent intent) { Log.i("DemoLog", "TestService软件商铺安装 -> onUnbinGoogled, from:" + intent.ge软件库tSt软件库蓝奏云ringExtra("from")); return false; } @Override public void onDestjson格局怎样翻开roy() { Log.i("DemoLog", "TestServandroid的drawable类ice -&json格局gt; onDestroy, Thread: " + Thread.currentThread().getName()); super.onDestroy(); } public inappeart getRandomNumber() { return generator.nextInt(); } pu软件技术blic void addLocationChangedliste闰土刺猹r(ILocationChangedLister iLocationChangedLister) { locationChangedList.add(iLocationChangedLister人体肠道结构图部位称号); } publigoogleplay下载c void getMyLogoogle服务结构ction() {软件snapchat Log.d(HTTPTAG, "getMyLoction: "); fusedLocationProviderClient = LocationServices.getFusedLocationProvijson解析derClient(this); SettingsClient settingsClient = LocationServices.getSettingsClient(this); LocationSettingsRequest.Builder builder = nRTCew LocationSettingsRequest.Builder(); mLoca人头攒动的读音tionRequest = new LocationRequest(); builder.addLocationRequest(mL闰土刺猹图片ocationRequest); LocationSettingsRequest loandroid下载安装cationSettingsRequest = bu软件库ilder.build(); // location setting settingsClient.checkLohttp://www.baidu.comcationSettings(locationSettingsRequest) .addOnSuccessListener(locationSettingsResponse -> fusedLocationProviderClient .requAndroidestandroid的drawable类LocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLAndroidooper()) .addOnSuccessListener(aVoid -&g人体成分剖析t; Log.d(TAG, "onSuccess: " + aVoid))) .addOnFailureListener(Throwable::printS软件库蓝奏云tackTrace); } public class MyBinder extends Binder { public LocationService getService() { return LocationService.this; } } public interface ILocationChangedLister { /** * Upgoogleplaydate the location information * * @pargoogle翻译am latLng The new location information */ public void locationChanged(Lajson是什么意思tLng latLng); }
}
-
在Acti人体接受的最大电压vihttp 404ty中制作地图,监听实时方位
Xml中增加人体肠道结构图部位称号地图:
<com.huawei.hms.maps.MapView
androidgoogle浏览器:id="@+id/map"
andrjson文件是干什么的oid:layout_width="match_parent"
android:layout_height="match_parent" />
activity地图制作:
mapView.onCreate(null);
mapView.ghttp://www.baidu.cometMapAsync(this);
制作是翻开我的方位 按钮闪现
@Ovegoogle空间rride
public void onMapReady(HuaweiMandroid什么意思ap huaweiMap) {appointment
hMap = huaweiMap;
hMap.setMyLocationEnabled(true);
}
设人体成分剖析置定位服务绑定监听
private SergoogleplayviceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(Componenandroid下载tName name, IBinder binder) {
isBound = true;
if闰土刺猹图片 (软件库binder instanceof LocationService.MyBinder) {
LocationService.MyBinder myBinder = (LocationService.MyBinder) binder;
locationService = myBinder.getService()软件snapchat;
Log.i(TAG, "ActivityA onServiceC闰土刺猹onnected");
locationappearSeRTCrviceJSON.addLocationChangedlister(iLocationChangedLister);
locationService.gappeareappstoretMyLoction();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
isBound = false;
locationService = null;
Log.i(TAG, "ActivityA onServiceDiandroid手机sconnected");
}
};
绑定到LocationService:
privateandroid电子市场 void b软件商铺indLocationService() {软件商铺
Intent intent = new Intent(mActivity, LocationService让天秤倒追的星座.class);
intent.putExtra("from", "ActivityA");
Log.i(TAG, "-----app下载--------------------------------------------------------人体肠道结构图部位称号");
Log.i(TAG, "bindService to ActivityA");
mActivity.bindSe人头攒动的读音rvice(intent, conn, Context.BIND_AUTO_CREATE);
}
在方位改动监听中处理 方位改动
LocationService.ILocationCjson格局怎样翻开hangedLister iLocationCh软件技术专业angedLister = new LocationService.ILocationChangedLister() {
@Override
papproachublic void locat人体成分剖析ionChanHTTPged(LatLng latLng) {
Log.d(TAG, "locationChanhttp://www.baidu.comged: " + latLng.latitude);
Ljson格局怎样翻开og.d(TAG, "locationChanged: " + latLng.longitude);
updateLocatio软件库n(latLng);
}
};
更新地图 经纬度视角
private void updateLocation(LatLng latLng) {
mLatLng = latLng;
h软件技术Map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 1));
}
测验
运用仿照方位软件改动仿照方位,地图视角和我的方位按钮能android什么意思够随之跳动。功用approach结束。
欲了解HMS Core更多概略,请参阅approach:
>>华为开发者联盟官网
>>获取开发辅导文档
>>参加开发者讨论请到CSDN社区或许Redandroid是什么手机牌子dit社区
>>下载demo和软件库示例代码请到Github或许Gitee
>>处理集成问题请到Stack Overflow
原文链接:deveandroid/yunosloper.huawei.com/consumer/cn…
原作者:HMS Core官方帐号