前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >赶鸭子上架之安卓开发速成

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

作者头像
孔西皮
发布2021-03-04 11:56:10
1.9K0
发布2021-03-04 11:56:10
举报
文章被收录于专栏:前行的CVer前行的CVer前行的CVer

亲测:博主有课内学的粗浅的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

image-20200522222005702
image-20200522222005702

按着软件安装管家里装的,成功装好了(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换成别人的能用的应该就行了吧
image-20200522231041795
image-20200522231041795
 换完之后重启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是:

gradle:1.5.0

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

三、开始真正的项目

3.1 页面布局

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

activity_main
activity_main

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

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

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

注意事项:

3.2 蓝牙

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

Intent enablelntent=new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE); 
startActivityForResult(enablelntent,1);

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

<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设备等。
授权
<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. 生命周期
State diagram for an Android Activity Lifecycle.
State diagram for an Android Activity Lifecycle.

图片来自: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);

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ¶一、安装软件和环境
    • ¶1.1. 安装JDK
      • ¶1.2 下载并安装ADT集成开发环境和Android SDK
      • ¶二、Hello World
        • ¶2.1 手机端设置
          • ¶2.2 创建工程
            • ¶2.3 一些小get
            • ¶三、开始真正的项目
              • ¶3.1 页面布局
                • ¶3.2 蓝牙
                  • ¶3.3 WIFI
                    • ¶授权
                  • ¶3.4 遇到的问题和解决
                    • ¶1. 无法创建新class
                • ¶四、组件布局
                  • ¶4.1 Activity
                    • ¶1. 概念
                    • ¶2. 三种状态
                    • ¶3. 生命周期
                    • ¶4. 常见操作
                  • ¶4.2 Service
                    • ¶4.3 Fragment
                      • ¶1. 什么是Fragment
                      • ¶2. 什么时候用Fragment
                      • ¶3. 一些注意
                  相关产品与服务
                  短信
                  腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档