
Android开发
Aaron - Wistron
多多交流,互相提高。
展开
-
Android Doze模式
计时器触发了就会去设置新的状态,然后再开新的计时器这样循环。最后走到Moved from STATE_LOCATING to STATE_IDLE. ,等下一个计时器触发,再进入Moved from STATE_IDLE to STATE_IDLE_MAINTENANCE 处理一些事情,然后再回到Moved from STATE_IDLE_MAINTENANCE to STATE_IDLE,就这样在这2个状态循环切换,只是每次从IDLE进入MAINTENANCE的时间会越来越久。原创 2022-10-11 11:04:22 · 1781 阅读 · 0 评论 -
Android aar引用aar / aar转换成jar
我们在开发过程中,可能会遇到自己要导出一个aar给别的app使用,但是这个aar又要用到别的aar,直接aar包aar不行,那怎么把一个aar包进另一个aar中?1.解压这个aar (ubuntu比较简单直接解压,不行换成zip再解压)把aar转换成jar 给aar使用,这样就可以了。3.重命名这个问题,然后放到libs中使用。2.找到classes.jar文件。原创 2022-08-23 14:20:22 · 1456 阅读 · 0 评论 -
Android RSA SHA256 解碼
implementation 'ch.dissem.jabit:jabit-cryptography-bouncy:1.0.1' public void verifySignature() throws Exception { PemReader reader=publicKeyReader(); InputStream data = data(); // InputStream signatureData = signa...原创 2022-02-16 14:13:33 · 2020 阅读 · 0 评论 -
Android okhttp 上传文件
String url = "上传地址";File file = new File(filePath);RequestBody sessionBody = RequestBody.create(file,MediaType.parse("mp4/*"));Request request = new Request.Builder() .url( url) .put(sessionBody) .build.原创 2021-12-23 14:51:41 · 2566 阅读 · 0 评论 -
Android P 发通知
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = null; //第二步:实例化通知栏构造器NotificationCompat.Builder: if (Build.VERSION.SDK_INT >= Build.VERSION..原创 2020-07-22 17:26:29 · 238 阅读 · 0 评论 -
Android 布局查找
是用Android Device Monitor可以查看对应布局的信息。找到你的sdk,tools文件夹,下面有个 monitor,运行。把你的手机和电脑连接,选中你的手机,然后点击,dump view hierarchy for UI automator ,就是那个手图案,然后可以看到注意:这个不是实时显示的,点一次显示一次手机当前画面。选择你要的布局,右边就会有id,等信息出来...原创 2020-05-13 11:08:13 · 564 阅读 · 0 评论 -
Android vector学习
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="66dp" android:height="100dp" android:viewportWidth="12.0" android:viewportHeight="20.0"> <path android:fillColor="@android:color/darker_.原创 2020-05-12 10:16:25 · 700 阅读 · 0 评论 -
Android opencv 检测屏幕是否有坏点/检测一个颜色是否有杂点
使用opencv 来判断屏幕是否有坏点。流程是这样的,先对着测试的手机屏幕拍照,然后剪切照片,把要检测的区域给截取出来,然后用Core.inRange 分析图片的每个像素的颜色,如果颜色在给定范围内就返回255 白色,不在就返回0黑色,最后生成一个新的Mat图片,一个黑白图片,最后我们去判断这个黑白图片,如果全是白色,说明没有坏点,给定的图片颜色都在给定颜色范围内,是用检测轮廓的方法来检测的,...原创 2020-04-01 14:12:25 · 2369 阅读 · 1 评论 -
descendantFocusability
beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点 blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点...原创 2020-03-26 17:04:51 · 284 阅读 · 0 评论 -
Android 获取cpu使用率
方法一:adb shell top -m 3 -n 1-m 最大进程数-n 迭代次数如果不跟-n 终端会一直卡在那,3秒刷新一次800 就是总共的cpu,idle那是空闲的,那总的前去空闲的然后除以总共的,就是使用率。方法二:adbshell cat /proc/stat获取每一个cpu的使用率CPU的使用率的计算方法:1、 采样两个足够短的...原创 2019-12-25 17:34:25 · 3169 阅读 · 0 评论 -
Android P HttpURLConnection 网络异常 Cleartext HTTP traffic to **** not permitted
从P开始禁止未加密的的连接,所以会出现下面的异常Cleartext HTTP traffic to **** not permitted解决:在AndroidManifest.xml配置文件的<application>标签中直接插入android:usesCleartextTraffic="true"...原创 2019-11-01 15:46:37 · 298 阅读 · 0 评论 -
Android GPS 冷 热 温 启动,以及相关数据的清除
热启动:就是在上一次GPS定位到的情况下。关掉GPS,然后再打开,然后打开GPS去定位。一般3秒左右。温启动:就是在上一次GPS定位到的情况下。关掉GPS,然后清除星历数据,然后打开GPS去定位。一般30秒左右。冷启动:就是在上一次GPS定位到的情况下。关掉GPS,然后清除所有数据,然后重启手机(有的手机需要),然后打开GPS去定位。时间最长。清除数据的代码如下,都是通过send...原创 2019-10-09 15:03:39 · 2109 阅读 · 0 评论 -
Android TextView 自动滚动到最后一行
private TextView mPingResult; private void initView() { mPingResult=findViewById( R.id.pingResult ); mPingResult.setMovementMethod( new ScrollingMovementMethod() ); ...原创 2019-08-23 17:01:21 · 3016 阅读 · 0 评论 -
Android 拍照后刷新图库
MediaScannerConnection .scanFile(this, new String[] { mFile.getAbsolutePath() }, null, null);原创 2019-07-16 14:23:19 · 1270 阅读 · 0 评论 -
Android AIDL 简单的2个例子 标准数据类型和自定义数据类型
本文将介绍如何去使用AIDL,这里有2种,一种是传递标准数据类型,另一种是传递自定义数据类型。第一种:这里分2个项目,一个是AIDL服务端,一个是AIDL客户端。服务端:1.创建AIDL文件右击你的项目,选择new->AIDL->AIDL File然后你就能看到代码结构中多了一个AIDL文件打开AIDL文件,你会看到这里已经有一个接口了,不用管,这个...原创 2019-05-22 10:25:30 · 802 阅读 · 0 评论 -
Android Camera2 预览和拍照
这个是google的demo,可以参考一下。https://github.com/googlesamples/android-Camera2Basic目前只是简单的实现的预览和拍照,照片没有处理,所以拍出来的不是正的。权限先加好。1.定义TextureView要预览camera就要先定义一个用来显示的控件。布局很简单,不上代码了。首先看TextureView是否可...原创 2019-04-23 16:04:43 · 929 阅读 · 0 评论 -
Android RecyclerView的简单使用,实现了文件浏览器。
这是一个文件浏览器的例子,点击文件夹就会进入到这里文件夹,点button就返回上一级目录,用到了RecyclerView。布局比较简单,最上面是个textview显示当前路径,然后是个button返回上级目录,最后是一个recyclerview用来显示文件列表。先贴一下布局,然后看怎么使用recyclerview实现。mainactivity.xml<?xml v...原创 2019-04-18 10:52:20 · 1272 阅读 · 0 评论 -
Android WIFI IP
private String getLocalIpAddress() { WifiManager wifiManager = getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); // 获取32位整型IP地址 int ipAddress = wifiI原创 2017-02-21 15:41:48 · 462 阅读 · 0 评论 -
Android WIFI direct P2P
WIFI direct 分为2种模式。1. 直接连接。 正常的wifi direct,需要2个设备都支持这个功能。2个设备中会有一个随机成功group owner,也可以在连接的时候指定。2. 兼容模式。 一个带有直连功能的设备,开启兼容模式。其它设备可以通过wifi direct直接和这个设备连接,如果其他设备不支持wifi direct功能,也可以连接,通过原创 2017-03-30 11:08:11 · 1190 阅读 · 1 评论 -
Android Bluetooth通信
mChatHandler = new WisBluetoothChatHandler(this, mBTAdapter, WisBluetoothChatHandler.MODE_CLIENT);mChatHandler.setOnWisBluetoothChatDataChangedListener(mBTDataChangedListener);mChatHandler.setO原创 2017-03-30 11:27:23 · 498 阅读 · 0 评论 -
Android AT command
9.0以后这个方法不能用了工具类写好了,可以参考https://download.youkuaiyun.com/download/aaron121314/11705363使用framework中的Phone.java来直接发送AT command。这是个接口,我们要获得这个接口的实现对象。invokeOemRilRequestStrings(String[] strings, Me...原创 2017-04-24 16:31:02 · 5035 阅读 · 10 评论 -
Android Camera2 闪光灯
mPreviewBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH);updatePreview(mCaptureSession);private void updatePreview(CameraCaptureSession session) { try {原创 2017-04-26 18:03:37 · 4620 阅读 · 3 评论 -
Android Spinner getView getDropDownView 的区别
getView 设置的是Spinner下拉打开前的布局getDropDownView 设置的是下拉打开后,下拉的布局这样设置使得布局都一样。布局文件就是一个简单的layout中放个textviewcommandList=new ArrayList;commandList.add("aa");commandList.add("aabb")原创 2017-05-18 09:48:54 · 2800 阅读 · 0 评论 -
Android 矢量图 vector 制作
1.下载一个软件Inkscape下载地址2.打开Inkscape绘图这里绘制完成后的图片是SVG格式的。3.将SVG转换成android的xml下载一个工具svg2android-gh-pages4.开始软件这个工具是一个文件夹,用浏览器打开里面的index.html文件。点击中间导入SVG文件。原创 2017-06-16 18:00:12 · 1433 阅读 · 0 评论 -
Android png转xml
本文将介绍如何把png图片转换成svg矢量图,然后再生成xml文件。 1.打开png图片 File->Open->你的png图片 选择默认配置 2.转换 选中你的图片,path->Trace Bitmap (Ctrl+Shift+B) 按照图中选择,Scans要选2,不然会有很多path出来。点击ok。然后保存。 3.使用svg2android-gh-pages转换 下载这个软件原创 2017-09-26 16:39:22 · 11269 阅读 · 5 评论 -
Android8.0 Do not disturb(DND)/Zenmode 添加一个新的模式
这里添加的模式可能涉及的地方不全面,目前把已知的地方都加上。可以搜索ZEN_MODE_ALARMS来看看哪里还需要加代码。目前就改了这些地方,有些地方不知道有什么用,可能只是log信息,有些是显示的图标,根据不同模式显示不同icon。 1.在QS中添加选项 打开关闭DND是在quick settings中的,当然也可以按音量下。我们这要在QS中添加,可以按照其他dnd模式来添加代码。先...原创 2017-12-04 10:45:00 · 7993 阅读 · 0 评论 -
Android 快捷方式 app shortcuts
android7.0及以上版本,再长按app的时候会弹出快捷方式。如下图。具体如何实现的请参考google 官方文档 https://developer.android.google.cn/guide/topics/ui/shortcuts...原创 2018-07-18 13:28:02 · 575 阅读 · 0 评论 -
Android listview 一个item加载多个布局
由于项目需要,有个页面里面的内容需要用Listview显示,但是每个item里面又有像listview那样的内容显示。所以网上查了很多资料,有说用Listview嵌套Listview做,也有我们说的这种,加载多个布局。这里实现的listview类似淘宝订单那种。每个item里面有小的item个数不确定。可以使用listview嵌套listview那样做,但是可能会有问题。所以用这种加载不同布局来做...原创 2018-07-05 22:08:16 · 2866 阅读 · 0 评论 -
Android 权限申请
官网文档点击打开链接// Here, thisActivity is the current activityif (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRAN...原创 2018-07-14 21:13:04 · 337 阅读 · 0 评论 -
Android 通知栏点击
这里介绍如何点击通知后,跳转到指定activity,包含多个activity。 app结构:有3个activity,执行顺序是a->b->c,a是主界面。需求:点击通知,直接打开activity c,按返回键打开b。 这里的主activity一定要用FLAG_ACTIVITY_NEW_TASK ,不然会打开多次。当然根据不同的需求,设置不同。其它activity的启...原创 2018-08-02 16:30:32 · 1386 阅读 · 0 评论 -
no permissions (user in plugdev group; are your udev rules wrong?);
1.查看机器的idlsusb我这边的是Google Inc. id 就是 18d12.添加sudo gedit /etc/udev/rules.d/51-android.rules打开文件后 添加如下:sudo gedit ~/.android/adb_usb.ini打开文件添加如下(如果有多个,记得一个id一行):最后adb kill-ser...原创 2019-04-08 11:26:18 · 3149 阅读 · 0 评论 -
Android Studio NDK JNI 配置
1.下载NDK如果已经下载好了,NDK那就有路径,没有那里会有Download的按钮下载。2. 配置环境变量打开Terminal执行sudo gedit /etc/profile在最后加上NDKROOT=/home/aaron/Tools/AndroidStudio/android-studio-sdk/android-sdk-linux/ndk-bundle原创 2016-12-06 15:49:36 · 1133 阅读 · 0 评论