Linux下:adb shell ps | grep [apk包名]
Windows下:adb shell ps | findstr [apk包名]
分类:android
Android P 允许使用明文流量
安卓AMR录音文件音量放大
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import io.kvh.media.amr.AmrDecoder; import io.kvh.media.amr.AmrEncoder; public class AmrUtil { private static final int[] amrEncodeMode = {4750, 5150, 5900, 6700, 7400, 7950, 10200, 12200}; // amr 编码方式 private static final int AMR_FRAME_COUNT_PER_SECOND = 50; private static int mMode = 0; 继续阅读安卓AMR录音文件音量放大
Android多渠道打包工具–MoeApkTool(通过assets目录内文件来区分渠道)
该工具参考自:RyApkTool特在此表示感谢~
1.原理
已签名APK文件==>ShakaApktool解压APK文件==>添加MOE_CHANNEL文件到assets目录
==>ShakaApktool重新打包APK文件==>jarsigner签名
MOE_CHANNEL文件里的内容就是渠道信息
2.用法
将APK文件放入工具包文件夹
CD到文件夹所在目录:java -jar MoeApkTool.jar keyFile keyName keyPasswd
3.编辑渠道信息
编辑工具包文件夹下的info文件夹里的channel.txt文件,一行一个渠道号
4.在程序里使用
5.下载地址
【转】Java应用打包后运行需要注意编码问题
文章针对作者原文略有修改,以下是正文。
最近在做一个项目,项目总的来说就是和数据库打交道,取出数据来通过HTTP协议提交到一个接口上去。具体功能不多说了,只是讲这里面的一点——编码问题
项目当中,涉及到取所有数据的MD5值。
在Java项目中,个人喜欢将项目的默认编码改为UTF-8。使用的开发工具以Eclipse为主。然而,奇怪的问题出现了。当我在IDE中对项目进行调试的时候没有任何问题,但是打成了jar包后再通过
java -jar project.jar
运行的时候,每次提交数据,接口都会返回数据说我的签名不正确。换句话说就是我的最后一步,做MD5运算的时候出了问题。
为什么打了jar包就不行呢?几经波折,又是查看参数的hashCode,又是检查所有提交内容的十六进制数据,发现是文本编码出了问题。在Eclipse中是正确的,但是打出jar包后,启动命令行一直没设置字符串默认编码,因此java虚拟机就按照所在系统的默认编码运行了。我使用的是Windows环境,那么自然是GBK编码。
后来通过查阅资料,解决的办法就是加一个参数指定编码:
java -Dfile.encoding=utf-8 -jar project.jar
这样就可以了。工具正常运行了。
调用移动接口遇到的问题总结
方向一旦跑偏,造成的影响是非常大的。
1、请求地址问题
问题描述:移动接口的请求地址是IP地址,需要在header中设置host参数。测试过程中一直遇到400错误而不知道原因,于是决定在PC上面使用fidder进行抓包查看。抓到的包一直有问题,host地址始终是ip地址而不是设置好的域名。
问题原因:fidder抓手机包采用的是代理方式。抓包后对header中的host信息进行了改动。更深层次的原因是fidder采用了PC端的DNS解析。
问题解决:使用fidder抓包时,PC上面修改hosts文件,手机端请求地址改为域名方式。
2、Base64编码问题
问题描述:使用fidder抓包后发现,header信息中有一个参数不正确。移动方提示参数未设置。
问题原因:程序中使用了android.util.Base64进行Base64加密。该包进行加密的时候默认进行了自动换行操作。
问题解决:使用android.util.Base64包进行加密的时候,第二个参数需要改为Base64.NO_WRAP。
写一点关于安全的东西:)
一、双向消息加密
RSA,非对称加密算法。
DES,AES,对称加密算法。
用于服务端和客户端通讯。
客户端向服务端发送数据,采用RSA算法,使用公钥进行加密。服务端使用私钥进行解密。
服务端向客户端发送数据,采用DES或AES算法进行加密。客户端进行解密。
二、用户登录验证
谷歌验证 (Google Authenticator)
用于用户登录二次验证。
m3u8格式文件解析
public class VideoUtil { /** * 根据电影的m3u8_url解析出ts_url即xxx.ts形式url为元素的集合 * * @param m3u8_url m3u8文件地址 * @return 返回ts_url集合 */ public static ArrayList m3u8Parser(String m3u8_url) { try { ArrayList list_ts = new ArrayList(); URL url = new URL(m3u8_url); HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); InputStream in = urlConn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while ((line = reader.readLine()) != null) { if (line.startsWith("#")) { //这里是Metadata信息 } else if (line.length() > 0) { //这里是一个指向的视频流路径 ,可能是绝对地址,也可能是相对地址 if (line.startsWith("http")) { //如果以http开头,一定是绝对地址了 list_ts.add(line); } else { //不以http开头,是相对地址,需要进行拼接。 String m3u8_pre = m3u8_url.substring(0, m3u8_url.lastIndexOf("/") + 1); list_ts.add(m3u8_pre + line); } } } in.close(); return list_ts; } catch (IOException e) { e.printStackTrace(); } return null; } }
Android自定义ToggleButton
1、设置自定义背景,设置on、off文案都为空
<ToggleButton android:id="@+id/lockBtn" android:background="@drawable/lock_me" android:textOn="" android:textOff=""/>
2、自定义背景文件
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/lock_me_on" /> <!-- pressed --> <item android:drawable="@drawable/lock_me_off" /> <!-- default/unchecked --> </selector>
3、按钮的监听
mLockBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mLockBtn.isChecked()) { //锁定 mLockFlag = true; mSeekBar.setEnabled(false); mTopView.setVisibility(View.GONE); mBottomView.setVisibility(View.GONE); } else { //取消锁定 mLockFlag = false; mSeekBar.setEnabled(true); mTopView.setVisibility(View.VISIBLE); mBottomView.setVisibility(View.VISIBLE); } } });
【转】修改Android签名证书keystore的密码、别名alias以及别名密码
转载自:修改Android签名证书keystore的密码、别名alias以及别名密码
之前在测试Eclipse ADT的Custom debug keystore自定义调试证书的时候,发过一篇关于调试证书规格的博文:Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和alias命名以及alias密码都是有规矩的。其实Android应用开发接入各种SDK时会发现,有很多SDK是需要靠package name和keystore的指纹hash来识别的(百度地图SDK、Facebook SDK等等…),这样如果使用默认自动生成的debug keystore的话就会给开发调试工作带来一些麻烦。这时可以通过修改正式的release keystore,生成一份“遵守规矩”的临时自定义调试证书给开发时用,就方便多了,具体方法如下:
继续阅读【转】修改Android签名证书keystore的密码、别名alias以及别名密码