日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android studio定位gps

發(fā)布時(shí)間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android studio定位gps 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.AndroidManifest.xml文件中添加權(quán)限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

2.布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextView android:layout_height="match_parent"android:layout_width="match_parent"android:textStyle="bold"android:textSize="20sp"android:padding="5dp"android:id="@+id/tv_show"/><Buttonandroid:id="@+id/button1"android:layout_width="100dp"android:layout_height="50dp"android:text="按鈕" /><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/lv1"></ListView> </androidx.constraintlayout.widget.ConstraintLayout>

3.后端代碼

package com.example.mygps;import androidx.appcompat.app.AppCompatActivity; import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.os.Bundle;import java.util.ArrayList; import java.util.List;public class MainActivity extends AppCompatActivity {private LocationManager lm;private TextView tv_show;private Button btn1;private ListView lv1;public static List list = new ArrayList();public static ArrayAdapter<List> adapter;@SuppressLint("MissingPermission")@RequiresApi(api = Build.VERSION_CODES.M)@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_show = findViewById(R.id.tv_show);lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);if (!isGpsAble(lm)) {Toast.makeText(MainActivity.this, "請打開GPS", Toast.LENGTH_SHORT).show();openGPS2();}if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {//未開啟定位權(quán)限//開啟定位權(quán)限,200是標(biāo)識碼ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200);} else {startLocation();Toast.makeText(MainActivity.this, "已開啟定位權(quán)限", Toast.LENGTH_LONG).show();}btn1 = findViewById(R.id.button1);//list格式的listviewlv1 = findViewById(R.id.lv1);//list.add("獲取數(shù)據(jù)");adapter=new ArrayAdapter<List>(this,android.R.layout.simple_expandable_list_item_1,list){@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//重載該方法,在這個(gè)方法中,將每個(gè)Item的Gravity設(shè)置為CENTERTextView textView = (TextView) super.getView(position, convertView, parent);textView.setTextSize(40);//修改listview中數(shù)據(jù)字體的大小return textView;}};lv1.setAdapter(adapter);//點(diǎn)擊listview事件lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this, "選擇了"+list.get(position),Toast.LENGTH_SHORT).show();//list.remove(position);adapter.notifyDataSetChanged();}});btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {list.clear();for (int i=0;i<10;i++){list.add("數(shù)據(jù)"+i);}adapter.notifyDataSetChanged();//Toast.makeText(MainActivity.this, "我是按鈕", Toast.LENGTH_LONG).show();//配置ArrayAdapter適配器}});}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode){case 200://剛才的識別碼if(grantResults[0] == PackageManager.PERMISSION_GRANTED){//用戶同意權(quán)限,執(zhí)行我們的操作startLocation();//開始定位}else{//用戶拒絕之后,當(dāng)然我們也可以彈出一個(gè)窗口,直接跳轉(zhuǎn)到系統(tǒng)設(shè)置頁面Toast.makeText(MainActivity.this,"未開啟定位權(quán)限,請手動(dòng)到設(shè)置去開啟權(quán)限",Toast.LENGTH_LONG).show();}break;default:break;}}//定義一個(gè)更新顯示的方法private void updateShow(Location location) {if (location != null) {StringBuilder sb = new StringBuilder();sb.append("當(dāng)前的位置信息:\n");double a = location.getLongitude();if(a<=0){a = location.getLongitude()*-1;}sb.append("經(jīng)度:" + a + "\n");//顯示正數(shù)sb.append("緯度:" + location.getLatitude() + "\n");sb.append("高度:" + location.getAltitude() + "\n");sb.append("速度:" + location.getSpeed() + "\n");sb.append("方向:" + location.getBearing() + "\n");sb.append("定位精度:" + location.getAccuracy() + "\n");tv_show.setText(sb.toString());} else{tv_show.setText("");}}@SuppressLint("MissingPermission")private void startLocation(){//從GPS獲取最近的定位信息Location lc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);updateShow(lc);//設(shè)置間隔兩秒獲得一次GPS定位信息lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8, new LocationListener() {@Overridepublic void onLocationChanged(Location location) {// 當(dāng)GPS定位信息發(fā)生改變時(shí),更新定位updateShow(location);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {// 當(dāng)GPS LocationProvider可用時(shí),更新定位updateShow(lm.getLastKnownLocation(provider));}@Overridepublic void onProviderDisabled(String provider) {updateShow(null);}});}private boolean isGpsAble(LocationManager lm) {return lm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER) ? true : false;}//打開設(shè)置頁面讓用戶自己設(shè)置private void openGPS2() {Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);startActivityForResult(intent, 0);}}

總結(jié)

以上是生活随笔為你收集整理的android studio定位gps的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。