idea上android开发

您所在的位置:网站首页 安卓项目导入idea并运行失败 idea上android开发

idea上android开发

2024-07-11 00:00| 来源: 网络整理| 查看: 265

一,开发工具 编译工具:idea 二,代码编写 1,配置百度地图 密钥申请 在这里插入图片描述 首先是Sha1获取 在控制台页面或者idea自带的控制台页面,进入到自己的用户文件夹下,找到 debug.keystore 文件,一般是这个目录 在这里插入图片描述 然后复制 debug.keystore 文件路径‪C:\Users\17954.android\debug.keystore 在idea命令行敲如下命令 keytool -list -v -keystore C:\Users\17954\.android\debug.keystore

在这里插入图片描述 密码默认是android 进入后复制下方的sha1码 然后是包名 打开build.gradle 这个要是自己的app下配置目录 在这里插入图片描述 同样复制 输入之后就能到自己的控制台了。

2,下载百度地图SDK 百度地图SDK下载 这里下载记得要勾选定位 解压后把里面的文件复制到开发工具的 libs下在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下 sourceSets { main { jniLibs.srcDir 'libs' } } 导入依赖 打开setting下的project Structure 在这里插入图片描述 这里我是导入过了的 未导入则点击加号,然后jar,选择libs下的jar包就好 选择之后apply,等待框架构建,可以发现工作目录下多了一个文件夹,以及多了几行代码 在这里插入图片描述 3,项目配置

前面就算是基本的准备流程了,再来是项目的具体应用 1.配置AndroidManifest.xml文件中添加

开发者 key就是控制台中的ak 以及在外层添加

2,添加控件 在布局文件xml中添加

由于是不支持直接拖拽的,要以代码形式添加 3,创建运行类

public class DemoApplication extends Application { @Override public void onCreate() { super.onCreate(); //在使用SDK各组件之前初始化context信息,传入ApplicationContext SDKInitializer.initialize(this); //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型. //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。 SDKInitializer.setCoordType(CoordType.BD09LL); } }

在AndroidManifest.xml文件中声明该Application

android:name=".DemoApplication"

这个是加在 application 标签内的 4,编写执行类 这里以主控制类为例

public class MainActivity extends AppCompatActivity { private MapView mMapView=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView=findViewById(R.id.bmapView); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } } 4,运行代码 三,定位代码添加 1,xml页面代码 2,控制器代码 package com.example.baidumap; import android.Manifest; import android.content.pm.PackageManager; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; 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.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.model.LatLng; /* 百度地图应用,包含定位信息和地图显示 一般需要打开定位服务,选择高精度定位模式,有网络连接 需要在清单文件里使用百度云服务(参见清单文件service标签) 需要创建应用(模块)的Key,并写入清单文件(参见清单文件meta标签) */ public class MainActivity extends AppCompatActivity { LocationClient 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 { @Override public 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.onResume(); } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop(); mapView.onDestroy(); } } 四,代码git仓库

这里是我的项目源码

五,总结 由于和老师的开发工具不同,在文档上也有着差异,自己对于一些设置找了半天才能找到,总的来说还是收获了不少


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3