2020年3月17日星期二

Android系统上的http服务端开发

前文提到过,前些天接到一个Android系统开发任务,其中一个模块是开发一个http服务端,供客户端通过微服务的形式,下发命令和获取日志。
我本无Android开发经验,马上上网搜索,发现很多人写的经验,不过是提供静态网页,大部分还是给自己的html5前端提供,这类需求用NanoHttpd一般都可以满足。但我需要提供微服务,按网上的说法,这种情况推荐使用Android Async库(好像流行称作“框架”),github地址是
https://github.com/koush/AndroidAsync
然而,Android Async仍然是一套比较底层的代码,并不直接提供服务器功能,把它用起来对我来说难度不小。恰好CSDN上有一些使用Android Async库的文章。推荐这篇
https://blog.csdn.net/TurkeyCock/article/details/86555919?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
这篇文章还附带了代码,文末附带了链接,即下面的网址。结合代码和这篇文章,我很快就掌握了这套库的基本用法。
https://github.com/qianxin2016/AndroidHttpServer
当时好友李想帮我看过这套代码,这套代码有个缺点是,服务跑在主线程里,没有跑在单独的线程里。这样当主线程繁忙的时候可能会导致服务响应缓慢,其他人在使用时,最好优化一下。
开发好的APP, 在PC上的模拟器中运行时,通过同一模拟器上的其他应用是可以访问这个服务的,但是通过PC机却不能访问。android开发者官网有个指导,讲解了使用redir命令配置模拟器的端口重定向,但我反复试了好久都没有成功。后来在手机上,将手机和电脑接入同一局域网,在电脑上示可以访问和调试这个服务的。小白无需担心Android是否有防火墙的问题。

2020年3月15日星期日

SONY ICF-SW07拆机图

我的这台ICF-SW07是从收音机论坛上已非常合理的价格,从一位收音机爱好者那里买来的,到手的成色可以算是99成新。但今年2月初在一次收听的时候,后壳上固定天线的塑料破裂,于是拆开后壳修复该问题,随手拍了一张开机图。以供那些好奇又不舍得拆机的朋友查看。

2020年3月6日星期五

适合初学者的Android教程

复工后接到一个紧急且重要的任务,开发一个Android APP。会者不难,然而我是一个C程序员,此前从未接触过Android开发,java也是十几年前上学的时候学的。
现在学习IT真的比以前容易很多,网上有很多教程。于是赶快从Google上捜了两个所谓菜鸟教程。然而,除了第一章介绍Android系统、安装Android Studio和生成第一个Hello World APP可以看明白,后面就一头雾水了。
在好友李想的推荐下,我找到了Android的官方教程。对照这个教程循序渐进地学习,特别是要跟着教程动手操作,我的开发能力突飞猛进地增长,而且学习过程乐趣无穷。这里把它推荐给大家,网址是
https://codelabs.developers.google.com/android-training/
学习这个教程也要具备一定的前提条件:
1.会科学上网,暂未找到国内镜像
2.具备英语阅读能力
上述两点也是学好IT,做好IT的必备条件
3.具备一定的java语言基础和面向对象基础
这个教程也有一个明显的缺点:现在最新稳定的Android Studio是3.6版本,教程中用的版本比较旧,有一些操作方法不一致。

2020年3月5日星期四

Linux系统Android Studio无法连接华为手机的解决方法

现象:
我在Linux系统下,使用Android Studio开发手机应用。将一部华为Mate 10手机通过USB线连接在电脑上以后,Android Studio调试栏里的设备,只有我创建的模拟器,找不到这部华为手机。已经排除了USB连线、手机未打开USB调试功能等原因。运行adb devices命令,可以看到手机序列号,同时显示no permissions.在Android Studio里运行Troubleshoot Device Connections,也可以找到手机,但就是无法用于调试。

解决方案:
参考这篇文章解决了问题。为防止文章丢失,列出关键步骤:
1)创建或打开文件
sudo vi /etc/udev/rules.d/51-android.rules
2)添加一行
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
3)修改文件权限
sudo chmod a+r /etc/udev/rules.d/51-android.rules
4)  手机要关闭USB调试功能然后再打开才能生效。