请选择 进入手机版 | 继续访问电脑版

HDU-安卓程序开发之Location/调用百度地图/Widget组件开发

[复制链接]
钟启航 发表于 2021-1-2 11:50:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
前言

  没想到发布了大作业之后竟然另有两章内容…
第9章-位置服务与舆图应用
第10章-Widget组件开辟
那么没什么好说的开始吧(呲牙)
Manifast

  1.                                                                                                                 
复制代码
Android Studio自带的Location

  演示效果如下,xml就不贴了,就一个按钮和一个textView而已
java写了有两个效果,一个是按下按钮更新,一个是根据时间和位移的变革实时更新。
(别忘记在虚拟机的设置里给这个应用一个位置权限)


  1. package fourvolt69.homework;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import android.Manifest;import android.content.ContentValues;import android.content.Context;import android.content.pm.PackageManager;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textView);        Button button = (Button) findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);                //这一段是清除找不到位置的情况                if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {                    // TODO: Consider calling                    //    ActivityCompat#requestPermissions                    // here to request the missing permissions, and then overriding                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,                    //                                          int[] grantResults)                    // to handle the case where the user grants the permission. See the documentation                    // for ActivityCompat#requestPermissions for more details.                    return;                }                Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);                double altitude = location.getAltitude();       //海拔                double latitude = location.getLatitude();       //纬度                double longtitude = location.getLongitude();    //经度                textView.setText("海拔:"+String.valueOf(altitude)+"\n纬度:"+String.valueOf(latitude)+"\n经度:"+String.valueOf(longtitude));            }        });        //体现用GPS定位的方式(网络定位在虚拟机里似乎用不起来),以5000ms的时间,3m的位移,创建一个回调函数(位置监听器,用于处理处罚位置改变事件)        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,3, new TestListener());    }    class TestListener implements LocationListener{        @Override        public void onLocationChanged(@NonNull Location location) {            //当位置更新时改变textView的文字            double altitude = location.getAltitude();       //海拔            double latitude = location.getLatitude();       //纬度            double longtitude = location.getLongitude();    //经度            textView.setText("海拔:"+String.valueOf(altitude)+"\n纬度:"+String.valueOf(latitude)+"\n经度:"+String.valueOf(longtitude));        }        @Override        public void onStatusChanged(String s, int i, Bundle bundle) {        }        @Override        public void onProviderEnabled(String s) {        }        @Override        public void onProviderDisabled(String s) {        }    }}
复制代码
调用百度舆图

  准备工作1:
下载百度的舆图SDK的开辟包
http://lbsyun.baidu.com/





  准备工作2
注册成为百度开辟者,给你的应用申请一个密钥
http://lbsyun.baidu.com/apiconsole/key



  准备工作竣事,这里开始使用了
在这里找到杭电的经纬度,然后写到函数里
https://lbs.amap.com/console/show/picker
  1.    
复制代码
  1. package fourvolt69.homework;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import android.Manifest;import android.content.ContentValues;import android.content.Context;import android.content.pm.PackageManager;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;import java.util.Map;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        MapView mapView = (MapView)findViewById(R.id.baiduMap);        BaiduMap baiduMap=mapView.getMap();        baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);        LatLng latLng = new LatLng(30.318849,120.352604);        MapStatus mapStatus = new MapStatus.Builder().target(latLng).zoom(19).build();        MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);        baiduMap.setMapStatus(mapStatusUpdate);        BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.hdu);        OverlayOptions overlayOptions= new MarkerOptions().position(latLng).icon(bitmapDescriptor);        baiduMap.addOverlay(overlayOptions);    }}
复制代码


结语

  下次课是Widget组件开辟,届时再更新(呲牙)
做一widget小窗口,内含一文本框,一按钮
每隔一分钟在文本框中刷新显示当前时间,按下按钮则立刻刷新显示当前时间。

来源:https://blog.csdn.net/fourvolt/article/details/112052815
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )