Android第十四讲笔记(广播,百度地图)

Posted a碟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android第十四讲笔记(广播,百度地图)相关的知识,希望对你有一定的参考价值。

1.广播

​ 和我们常听说的广播类似,通过调节不同的电台频率,来接收不同的信息。在安卓当中,很多信息都可以发送给接收它信息的应用,也就是在同一‘频率’上的收音机,从而来进行对应的提示或者操作。
在这里插入图片描述

1.广播的创建

在这里插入图片描述

2.简单的广播示例

新建MyReceiver广播类

package com.hnucm.android_611;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        Log.i("MyReceiver","MyReceiver");
    }
}

MainActivity

注册广播,然后定义广播(以下定义广播内容为:网络状态发生改变)

package com.hnucm.android_611;

import androidx.appcompat.app.AppCompatActivity;

import android.content.IntentFilter;
import android.media.MediaParser;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyReceiver myReceiver=new MyReceiver();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        registerReceiver(myReceiver,intentFilter);
    }
}

示例如下
在这里插入图片描述

3.实现Activity之间的广播发送

再建一个MainActivity2

在MainActivity和MainActivity2中都增加一个按钮控件,分别用来作为跳转和发送广播的操作
MainActivity.java
在这里插入图片描述
MainActivity2.java
在这里插入图片描述
在这里插入图片描述
下面是示例
在这里插入图片描述

2.百度地图

1.导入百度地图依赖包

先去官网下载百度地图SDK
在这里插入图片描述
简单的分析
图像处理C,C++比JAVA快,所以都使用C,C++来编译成SO文件实现
在这里插入图片描述
找到工程目录中 app 目录下的 libs 文件夹,将刚刚下好的开发包中的libs中的文件放进来
在这里插入图片描述
在Android Studio中先导入依赖包,在 build.gradle 文件中的android节点下 加入如下代码
在这里插入图片描述

sourceSets {
        main {
            jniLibs.srcDir 'libs' 
        } 
    }

发现项目中多了这个文件夹
在这里插入图片描述
点击 jniLibs 文件夹下的 BaiduLBS_Android.jar 文件,并右键 Add as Library.加入jar包
在这里插入图片描述
百度地图SDK就导入完成了。

2.注册和获取密钥

1.获取sha1值

先找到c盘 user 用户名下的.android 文件夹

在这里插入图片描述
打开cmd命令行切到该目录
输入一下命令

keytool -list -v -keystore debug.keystore

在这里插入图片描述
默认密码android (全部小写)
在这里插入图片描述
找到SHA1值

2.包名

在manifest文件中找到包名并复制
在这里插入图片描述

3.创建应用

在控制台应用管理中选择我的应用,然后创建应用
在这里插入图片描述

应用类型选择Android SDK

将刚刚准备的sha1值和包名写入

在这里插入图片描述

点击得到密钥在这里插入图片描述

3.配置key

在application节点下输入下面的meta-data标签,并输入在百度地图注册的key
在这里插入图片描述
添加相应的权限

<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划, POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" /><!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了 外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区 域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

创建MyApplication类继承系统的Application类并重写oncreate方法,使用SDK前的初始化
Application的onCreate()方法在应用程序启动时就会执行,比AppCompatActivity中的onCreate()方法还要早

package com.hnucm.android_611;

import android.app.Application;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;

public class MyApplication 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);
    }
}

在application节点下添加name属性
在这里插入图片描述

4.添加地图

在布局文件中添加地图组件
在这里插入图片描述
然后运行程序出现地图表示百度地图配置成功
在这里插入图片描述

5.地图核心功能

先获得地图控件。

1.设置缩放级别

在这里插入图片描述
核心代码

MapStatus.Builder builder = new MapStatus.Builder();
//        设置缩放级别,中心点位置
builder.zoom(18.0f);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

2.设置中心点位置

这句话可以设置中心点的位置

LatLng cenpt = new LatLng(28.135339, 112.900747);
LatLng cenpt = new LatLng(28.135339, 112.900747);
MapStatus.Builder builder = new MapStatus.Builder();
//        设置缩放级别,中心点位置
builder.zoom(18.0f)
                .target(cenpt);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

更多的功能,可以前往官方文档查看,目前我的课设不需要这个功能,就先不研究了…

以上是关于Android第十四讲笔记(广播,百度地图)的主要内容,如果未能解决你的问题,请参考以下文章

第十四讲 实例模式

《上古天真论》第十四讲文字版

视觉SLAM十四讲笔记 -- 第二讲

视觉SLAM十四讲笔记 -- 第二讲

视觉SLAM十四讲笔记 -- 第二讲

视觉SLAM十四讲笔记 -- 第二讲