赶鸭子上架之安卓开发速成

2021-03-04 11:56:10 浏览数 (1)

亲测:博主有课内学的粗浅的JAVA基础,其余从0开始,7天做出了一个“蓝牙智能窗帘”的APP。事实上,如果不是纠结蓝牙的一个bug不肯改方案,其余的学习和完成应该用了不到三天。

¶一、安装软件和环境

¶1.1. 安装JDK

JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。

没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。

¶1.2 下载并安装ADT集成开发环境和Android SDK

ADT:Android 集成开发环境,命名为 Android Developer Tools。

第一种装ADT的方式是:Eclipse Android SDK ADT Plugin。

第二种方法是安装Android Studio。

我采用的第二种方法。

查看Android Studio版本号:help->About

按着软件安装管家里装的,成功装好了(JDK和adb是之前自己装的)

¶二、Hello World

¶2.1 手机端设置

¶2.2 创建工程

参考自:使用Android Studio开发Android APP

我选的最低Android版本是23,即6.0版。

¶2.3 一些小get

Android Studio采用gradle来构建项目,gradle是一个项目构建工具,可以完成软件环境部署和打包等任务。在build.gradle文件中写项目的配置,比如引用外部仓库的工具等。你在Android Studio写好的代码最终要下载到手机里,或者打包成apk发布出去,这里的工作就依赖gradle完成。

项目中一般会出现2个或者多个build.gradle文件,一个在根目录下,一个在app目录下。

如果切换到Android模式下则全部在Gradle Scripts。

如果报错 unable to find valid certification path to requested target:

  1. 我的经验:找到这三个地方,把cacerts换成别人的能用的应该就行了吧
代码语言:javascript复制
 换完之后重启IDE,或者在IDE里File->Invalidate Caches / Restart,之后再File->Settings里看这里有没有证书,有的话应该就好了。

 <img src="Android/image-20200523001137929.png" alt="image-20200523001137929" style="zoom:50%;" />

​ 这个方法参考自:https://www.jianshu.com/p/89ca5b635d3f

  1. 另一个方法看起来很有用,但我没试过:https://blog.csdn.net/da_caoyuan/article/details/104343058

我用的gradle是:

代码语言:javascript复制
gradle:1.5.0

https://services.gradle.org/distributions/gradle-2.8-all.zip

¶三、开始真正的项目

¶3.1 页面布局

通过修改res->layout->activity_main.xml来进行页面布局

可以在Design通过拖拽完成设计

也可以在Text通过代码实现。

我个人喜欢Design初步设计,然后通过Text细调设置。为了简单起见,使用绝对布局。

注意事项:

¶3.2 蓝牙

有两种方式,一种是会弹出提示的:

代码语言:javascript复制
Intent enablelntent=new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE); 
startActivityForResult(enablelntent,1);

一种是静默模式的,这种模式需要在Androidmanifest文件中添加权限(添到开头,application前):

代码语言:javascript复制
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

我是看极客学院的两个视频学习的,但是视频中的代码不能实现蓝牙串口模块的收发,只能发送不能接收,原因可能是因为同一个设备既做客户端又做服务端,然后线程冲突了。

事实上,蓝牙有两种使用方式,一种就是传统的BlueToothSocket,然后发送和接收放在两个单独的线程。还有一种是低功耗蓝牙专用的蓝牙透传。

¶3.3 WIFI

Wi-Fi Direct API主要包含如下几部分。

  • WifiP2pManager类。该类中提供了允许用户发现、请求和连接其它支持Wi-Fi Direct设备的API。
  • 用于监听Wi-Fi Direct请求的广播接收器。
    • WifiP2pManager.WIFL_P2P_STATE_CHANGED_ACTION:检测Wi-Fi是否可用,并且将检测结果通知相应的窗口。
    • WifiP2pManager.WIFL_P2P_PEERS_CHANGED_ACTION:调用WifiP2pManager.requestPeers方法获取成功连接的设备列表。
    • WifiP2pManager.WIFL P2P_CONNECTION_CHANGED_ACTION:响应Wi-Fi连接状态(连接或断开)。
    • WifiP2pManager.WIFL_P2P_THIS_DEVICE_CHANGED_ACTION:响应设备的Wi-Fi状态变化。
  • 被Wi-Fi Direct框架检测到的事件通知,例如,终止连接、发现新的Wi-Fi Direct设备等。
¶授权
代码语言:javascript复制
<uses-sdk android:minSdkVersion="14"/>
<uses-permission android:name="android.permission.ACCESS_WIFL_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFL_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

¶3.4 遇到的问题和解决

¶1. 无法创建新class

https://stackoverflow.com/questions/45497266/unable-to-parse-template-class

**解决:**Go to File->setting->editor->file and code templates, select Class in the files tab and paste this:

#if ({PACKAGE_NAME} && {PACKAGE_NAME};#end #parse("File Header.java") public class

¶四、组件布局

安卓四大组件

  1. Activity:Activity用于显示用户界面,用户通过Activity交互完成相关操作,一个App允许有多个Activity
  2. Service:Service是Android提供一个允许长时间留驻后台的一个组件,最常见的用法就是做轮询操作!或者想在后台做一些事情,比如后台下载更新!
  3. BroadCastReceiver:BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,输入法改变等, 发生这些时间,系统都会发送广播,这个叫系统广播,每个APP都会收到,如果你想让你的应用在接收到 这个广播的时候做一些操作,比如:系统开机后,偷偷后台跑服务。这个时候你只需要为你的应用 注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就做写偷偷摸摸的勾当~
  4. ContentProvider:我们想在自己的应用中访问别的应用,或者说一些ContentProvider暴露给我们的一些数据, 比如手机联系人,短信等!我们想对这些数据进行读取或者修改,这就需要用到ContentProvider了!或者我们自己的应用,想把自己的一些数据暴露出来,给其他的应用进行读取或操作,我们也可以用到ContentProvider,另外我们可以选择要暴露的数据,就避免了我们隐私数据的的泄露。

¶4.1 Activity

¶1. 概念

可以与用户交互的基本图形呈现单元

¶2. 三种状态
  • 运行状态:可以操作
  • 停止状态:不可见,比如按了home键
  • 暂停状态:新的activity把后面的遮盖
¶3. 生命周期

图片来自:https://developer.android.com/reference/android/app/Activity

¶4. 常见操作

¶4.2 Service

(略)

¶4.3 Fragment

¶1. 什么是Fragment

封装布局和代码的组件

手机和平板电脑显示效果不同

¶2. 什么时候用Fragment
  • 逻辑共享
  • 保存状态
  • 回退导航
  • 整体移动
¶3. 一些注意

xml布局文件中要写包括对应的java类

onCreateView是Fragment生命周期方法中最重要的一个。因为在该方法中会创建在Fragment中显示的View。

//装载布局文件 View view=inflater.inflate(R.layout.my_fragment,null);

0 人点赞