当前位置: 首页 > news >正文

大连做网站电话2345中国最好的网址站

大连做网站电话,2345中国最好的网址站,南昌哪里做网站好,注册网站在哪里创建20212313 2023-2024-2 《移动平台开发与实践》第5次作业 1.实验内容 设计并开发一个地图应用系统。 该实验需提前申请百度API Key,调用接口实现百度地图的定位功能、地图添加覆盖物和显示文本信息。 2.实验过程 2.1 获取SHA1 (1)打开控制台…

20212313 2023-2024-2 《移动平台开发与实践》第5次作业

1.实验内容

设计并开发一个地图应用系统。
该实验需提前申请百度API Key,调用接口实现百度地图的定位功能、地图添加覆盖物和显示文本信息。

2.实验过程

2.1 获取SHA1

(1)打开控制台,输入cd .android
然后输入 keytool -list -v -keystore debug.keystore
显示keytool错误
在这里插入图片描述
(2)经过重新构建密钥库(具体内容在后续的问题分析中展示)
输入 keytool -list -v -keystore debug.keystore 获取SHA1
在这里插入图片描述

2.2 创建AK

(1)进入百度地图开发平台:百度地图开发平台,完成个人注册后(比学生认证快多了),进入控制台,点击左栏“应用管理”→“我的应用”,进行创建应用。
(2)选择Android SDK ,然后输入上文获取的SHA1,包名为com.example.baidu
在这里插入图片描述

2.3 下载并导入SDK

(1)首先下载SDK,下载jar包即可。下载链接
在这里插入图片描述
(2)将下载好的jar包等文件复制到Android项目中App目录下的libs文件夹,并右击jar包,点击“Add As Libraby”
在这里插入图片描述

(3)在src/main/目录下新建jniLibs目录,将so文件放入
(4)打开build.gradle.kts(:app)
在其中的android{}中添加如下代码:

 sourceSets {getByName("main") {jniLibs.srcDirs("libs")}

在这里插入图片描述

!!要打开红色方框的文件,而不是黄色方框的文件(虽然名字一样)
在这里插入图片描述

2.4配置相应文件

(1)打开AndroidManifest.xml,写入以下内容,其中的value值是获取的AK值
在这里插入图片描述

<service android:name="com.baidu.location.f"android:enabled="true"android:process=":remote"/><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="hrhDXaLYldZCDGq9ezRPLArKiM9hN2mH"/>

在这里插入图片描述

(2)在AndroidManifest.xml中添加所需要的权限

<!--百度定位所需要权限,前面是LOCATE权限组的2个危险权限--><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.INTERNET"/>

在这里插入图片描述

2.5 实现地图定位的核心代码

(1)activity_main.xml:
在LinearLayout的框架下设置显示经纬度的按钮。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"><!--百度地图控件--><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" /><!--位置文本布局的背景色代码的前2位代码为透明度--><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:background="#e0000000"android:orientation="vertical" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12dp"android:layout_marginTop="20dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="纬度:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Lat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="经度:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Lon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="10dp"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="地址:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout></LinearLayout></FrameLayout>

(2)Mainactivity.kt:

package com.example.baiduimport android.Manifest
import android.app.Activity
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.CheckBox
import android.widget.RadioButton
import android.widget.RadioGroup
import android.widget.TextView
import android.widget.Toast
import androidx.core.app.ActivityCompat
import com.baidu.location.BDLocation
import com.baidu.location.BDLocationListener
import com.baidu.location.LocationClient
import com.baidu.location.LocationClientOption
import com.baidu.mapapi.CoordType
import com.baidu.mapapi.SDKInitializer
import com.baidu.mapapi.common.BaiduMapSDKException
import com.baidu.mapapi.map.BaiduMap
import com.baidu.mapapi.map.MapStatusUpdateFactory
import com.baidu.mapapi.map.MapView
import com.baidu.mapapi.model.LatLngLocationClient mLocationClient;  //定位客户端
MapView mapView;  //Android Widget地图控件
BaiduMap baiduMap;
boolean isFirstLocate = true;TextView tv_Lat;  //纬度
TextView tv_Lon;  //经度
TextView tv_Add;  //地址@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//如果没有定位权限,动态请求用户允许使用该权限if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);}else {requestLocation();}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "没有定位权限!", Toast.LENGTH_LONG).show();finish();} else {requestLocation();}}
}
private void requestLocation() {initLocation();mLocationClient.start();
}
private void initLocation() {  //初始化mLocationClient = new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mapView = findViewById(R.id.bmapView);baiduMap = mapView.getMap();tv_Lat = findViewById(R.id.tv_Lat);tv_Lon = findViewById(R.id.tv_Lon);tv_Add = findViewById(R.id.tv_Add);LocationClientOption option = new LocationClientOption();//设置扫描时间间隔option.setScanSpan(1000);//设置定位模式,三选一option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);/*option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);*///设置需要地址信息option.setIsNeedAddress(true);//保存定位参数mLocationClient.setLocOption(option);
}
//内部类,百度位置监听器
private class MyLocationListener  implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {tv_Lat.setText(bdLocation.getLatitude()+"");tv_Lon.setText(bdLocation.getLongitude()+"");tv_Add.setText(bdLocation.getAddrStr());if(bdLocation.getLocType()==BDLocation.TypeGpsLocation || bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){navigateTo(bdLocation);}}
}
private void navigateTo(BDLocation bdLocation) {if(isFirstLocate){LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(update);isFirstLocate = false;}
}
@Override
protected void onResume() {super.onResume();mapView.onResume();
}
@Override
protected void onPause() {super.onPause();mapView=(MapView)findViewById(R.id.bmapView);mapView.onResume();
}
@Override
protected void onDestroy() {super.onDestroy();mLocationClient.stop();mapView.onDestroy();
}

2.6 运行成果

我使用了真机,视频1为真机下载app

1


视频2为软件运行效果

2

3.学习中遇到的问题及解决

  • 问题1:显示keytool错误,无法获取SHA1
  • 问题1解决方案:

①在终端工具输入或窗口运行窗口输入(窗口键+ R输入CMD):

 keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000

②填写注册信息,注意要求设置密码,密码请记录下来以便后续获取SHA1使用(注册内容可以随意填写)
③验证debug.keystore是否生成

keytool -list -v -keystore debug.keystore

④再次输入keytool -list -v -keystore debug.keystore即可

  • 问题2:在Mainactivity文件中,导入的baidu包报错
  • 问题2解决方案:要在在app文件夹下的build.gradle文件中添加代码后,上方会出现一个蓝条,选择Sync now。(选择另外一个的话就会报错)
    在这里插入图片描述
  • 问题3:打开应用后没有定位显示,只能显示一个地图
  • 问题3:解决方案:在AK申请的过程中,SHA1输入错误。

4.学习感悟、思考等)

本次实验过程并不难,主要就是获取自己主机的SHA1密钥然后在百度地图开放平台中申请AK,最后将jar包导入项目,最后根据老师给的代码进行实现地图定位。过程中遇到的困难几乎在csdn上都可以找得到。但是最后的运行闪退问题困扰我超级久,不知道是哪里出现了问题。无论怎么修改代码都会有问题。最后我根据同学的建议,将虚拟机修改成了真机,就发现不闪退了,这时候我又发现总是出现不了定位,只能打开地图。让我非常沮丧,经过重新的实验,最终我发现是我的SHA1密钥输入错误,导致最后的无法成功申请到百度地图的功能权限。真的是粗心浪费了我大量的时间与精力啊。

参考资料

  • Android Studio3.0对于百度地图SDK的开发(前置准备)
  • android中关于keytool 错误:java.lang.Exception:密钥库文件不存在: 解决步骤
http://www.ds6.com.cn/news/58361.html

相关文章:

  • 建设推广站网站方案软文推广服务
  • 网站上的定位怎么做广点通广告平台
  • 国外做耳机贸易的平台网站免费的舆情网站
  • 饭店品牌建设网站关键词在线优化
  • 网站建设有名的公司域名检测
  • dreamweaver网站设计模板排名优化工具
  • 网站设计需要什么软件北京网站建设公司
  • 泰安网站营销推广千博企业网站管理系统
  • 工程报价seo博客教程
  • ai智能生成图片免费网站seo排名培训
  • 做兼职拍照片传网站seo外链工具
  • 网红营销重庆seo技术教程博客
  • 包装盒在线设计网站seo网站查询
  • 快3网站制作 优帮云html网页设计模板
  • 平湖手机网站建设windows优化软件
  • 做推广哪些网站好seo网站排名软件
  • 微信导入wordpress东莞seo排名收费
  • 做购物网站 推广seogw
  • 门户网站建设注意事项日照网络推广公司
  • 蒙古文网站建设情况晋中网络推广
  • 中国纪检监察报电子版阅读温州seo网站推广
  • 民房做酒店出租网站app网络广告推广方案
  • 网站设计做哪些准备搜索引擎论文3000字
  • wordpress菜单种类seo 优化顾问
  • 广西网站建设.com软件开发培训多少钱
  • foxmail企业邮箱入口seo网络营销推广
  • 什么网站可以做ppt模板苏州网站制作推广
  • Java电商网站开发百度云长沙做网站的公司有哪些
  • 深圳做网站哪家专业舆情信息
  • 黑糖不苦建设的网站百度热搜榜小说排名