基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置。 主要是通过一个TextView来显示出。 主要的我在代码上已经注释了,在这里我就不在讲述了。 这是Manifest.xml中要写的。
*位置的服务(Location Based Service)
基于位置的服务所围绕的核心就是要先确定出用户所在的位置。一种是通过GPS定位,一种是通过网络定位。GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星交互来获取当前的经纬度信息,这种定位方式精确度非常高,但确定是只能在室外使用,室内基本无法接受到卫星的信号。网络定位的工作原理是根据手机当前网络附近的三个基站进行测速,以此计算出手机和每个基站之间的距离,在通过三角定位确定出一个大概的位置,这种定位方式精确度一般,但有点是在室内室外都可以使用。(引用郭霖老师书中的知识)
首先需要申请百度地图密钥: https://blog.csdn.net/weixin_42813606/article/details/88556804.这个连接里面有如何获取密钥。
还得需要申请百度地图SDK,在这里我就不介绍如何申请了,申请下来的就是如下所示:
话不多说,先上个案列更加明确。
首先需要创建一个安卓项目,这个我就更加不要接受如何创建了。
只需要把压缩包放进libs下面,其他的需要在创建一个包名字为jniLibs,
jniLibs文件夹是默认的,如果用其他名字需要在app目录下gradle配置文件中指定重定向的目录,没有必要了。
在xml中编写如下代码:<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/position_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
在java中编写如下代码:public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient;//定位服务的客户端。宿主程序在客户端声明此类,并调用 private TextView positionText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLocationClient=new LocationClient(getApplicationContext());//调用getApplicationContext()方法来调用一个全局的Context参数并传入 mLocationClient.registerLocationListener(new MyLocationListener());//调用.registerLocationListener()方法来注册一个定位监听器,当你获得 //位置信息的时候,就会回调这个定位监听器 setContentView(R.layout.activity_main); positionText=(TextView)findViewById(R.id.position_text_view); List<String> permissionList=new ArrayList<>(); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_PHONE_STATE)!=PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!permissionList.isEmpty()){ String[] permissions=permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this,permissions,1); }else { requestLocation(); } } private void requestLocation() { initLocation(); mLocationClient.start();//开始定位,定位的结果会回调到我们前面注册的监听器中MyLocationListener //LocationClient的start()方法只会定位一次 } private void initLocation() { LocationClientOption option=new LocationClientOption(); option.setScanSpan(4000);//设置更新的间隔 多长时间进行一次请求 option.setIsNeedAddress(true);//是否获取当前详细的地址信息 mLocationClient.setLocOption(option);// 使用设置 } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if (grantResults.length>0){ for (int result:grantResults){ if (result!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"必须同意所有权限才能使用本程序",Toast.LENGTH_SHORT).show(); finish(); return; } } requestLocation(); }else { Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show(); finish(); } break; default: } } public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation bdLocation) { StringBuilder currentPosition=new StringBuilder(); //BDLocation的getLatitude()方法获取当前位置的纬度 currentPosition.append("纬度:").append(bdLocation.getLatitude()).append("n"); //BDLocation的getLongitude()方法获取当前位置的经度 currentPosition.append("经线:").append(bdLocation.getLongitude()).append("n"); currentPosition.append("国家:").append(bdLocation.getCountry()).append("n"); currentPosition.append("省:").append(bdLocation.getProvince()).append("n"); currentPosition.append("市:").append(bdLocation.getCity()).append("n"); currentPosition.append("区:").append(bdLocation.getDistrict()).append("n"); currentPosition.append("街道:").append(bdLocation.getStreet()).append("n"); currentPosition.append("定位方式:"); //BDLocation的getLocType()方法获取当前位置的定位方式 if (bdLocation.getLocType()==BDLocation.TypeGpsLocation){ currentPosition.append("GPS"); } if (bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){ currentPosition.append("网络"); } positionText.setText(currentPosition); } } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop(); } }
最后别忘了要设置权限和注册你所申请的百度密钥:<manifest xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" package="com.example.lbstest3"> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.READ_LOGS" tools:ignore="ProtectedPermissions" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="ADuRoL0gilmwrS6MnskQyWGSaaQxhwaH"/> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /> </application> </manifest>
这就是一个简单的定位你所在的位置。
效果图如下:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算