標籤:enabled gis imp android 所有許可權 prot extend apk file
Activity_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent"> 6 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"10 android:id="@+id/tv_positionTextView"/>11 12 </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="acticitytest.exapmle.com.lbstest"> <!-- 這個許可權用於進行網路定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!--訪問GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--訪問WiFi網路資訊,WiFi資訊會用於網路定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!--擷取運行商資訊,用於支援提供電訊廠商的資訊相關的介面--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--擷取WiFi許可權,WiFi資訊會使用這種網路定位--> <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"/> <!--SD卡讀取許可權--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!--允許使用者讀取低層級的系統日誌--> <uses-permission android:name="android.permission.WAKE_LOCK"/> <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"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="SvxVofWKmGx9PaizUrIk3q4TSaxlUv4A"/> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> </application></manifest>
MainActivity.java
package acticitytest.exapmle.com.lbstest;import android.Manifest;import android.content.pm.PackageManager;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient; private TextView postionText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationClient=new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListener()); setContentView(R.layout.activity_main); postionText=(TextView)findViewById(R.id.tv_positionTextView); 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(); } } public void requestLocation(){ initLocation(); mLocationClient.start();//開始定位 } /**用於更新位置資訊*/ private void initLocation(){ LocationClientOption option=new LocationClientOption(); option.setScanSpan(5000);//每五秒更新當前位置 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: break; } } public class MyLocationListener implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation bdLocation) { StringBuilder currentPostion =new StringBuilder(); currentPostion.append("緯度:").append(bdLocation.getLatitude()).append("\n"); currentPostion.append("經度:").append(bdLocation.getLongitude()).append("\n"); currentPostion.append("定位方式:"); if (bdLocation.getLocType()==BDLocation.TypeGpsLocation){ currentPostion.append("GPS"); }else if(bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){ currentPostion.append("網路"); }else{ currentPostion.append("未識別"); } postionText.setText(currentPostion); } } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop();//不斷更新時一定要注意,在活動銷毀時關閉,否則會一直耗電 }}
android之使用百度地圖(1)