Android-L SIM卡自适应更新语言问题

前言每次到发布UAT和Release 版本的时候,不同的组件总是出现各种问题,在测试中版本中就没有测试出来,就在今天发布Global(海外)版的时候遇到了一个之前并没发现的问题,就是刷机的rom版本是Global版的,默认的系统语言是英文版的。刚刷完机,插上中国区域的SIM 卡,第一次开机时候,语言自动切换到中文了,由于之前也没这方面经验,对这并不清楚,然后就当BUG 让我修改,后来在网上查了下资料,才了解MTK平台 确实有这么回事,Mark一下~详情如下:     Continue Reading
Xiho's avatar
Xiho Nov 01, 2016
 | 

Git 本地提交未Push 自动切到其他版本的解决姿势

现象描述: 我在现有的分支上进行修改代码,使用git提交本地代码后,SourceTree上面没有记录,我就纳闷了,我原本以为我提交到其他项目了,仔细查看了几个项目的提交记录也都没有,于是退出SourceTree,在打开这个项目还是没记录,并且最新修改的分支在两个版本之前的Develop v2.2.2分支(这个我记得我是在最新的分支上开发的,不排除我在其他分支上进行开发的情况),不过这个都不是事儿,怎么恢复修改的代码到最新的分支上面呢?下面提供解决方案~~ 解决方案: 打开gitbash 命令行; 输出git log 查看不到提交历史的历史记录; 输入git reflog可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录。 上面红色箭头指的地方就查看不到记录。     Continue Reading
Xiho's avatar
Xiho Oct 24, 2016
 | 

Android 中取得当前时区(以GMT形式)和语言

国际化需求,要访问当地的时区和语言,作为参数上传服务器处理一些业务,Android手机中如果想以GMT形式(GMT+08:00)得到当前时区,如下的工具类做个记录: /** * 时区语言工具类 * @author Xiho * */ public class I18NUtils { /** * 获取当前时区 * @return */ public static String getCurrentTimeZone() { TimeZone tz = TimeZone.getDefault(); String strTz = tz.getDisplayName(false, TimeZone.SHORT); return strTz; } /** * 获取当前系统语言格式 * @param mContext * @return */ public static String getCurrentLanguage(Context mContext){ Locale locale =mContext.getResources().getConfiguration().locale; String language=locale.getLanguage(); String country = locale.getCountry(); String lc=language+"_"+country; return lc; } }     Continue Reading
Xiho's avatar
Xiho Oct 20, 2016
 | 

Android NDK 开发(五)AndroidStudio 2.2 更友好的支持NDK

前言之前一直在用Eclipse 做开发,直到今年年初才将项目迁移到Google 推荐的AndroidStudio上面,毕竟这是一个趋势,可谁知道事情根本没有我想的那么简单,这期间遇到了N多坑,我想这些坑可能大家也有可能遇到,不在这里详细叙述。最终一个个问题的去解决,走完了这些坑,觉得还挺好用的,Eclipse 是一个吃内存的IDE,反正我每次打开,编写代码的时候就会卡,有时候还是死掉,已无力吐糟~~,AndroidStudio的界面更人性化,除此之外,还有更多的功能。所以决定把之前在正在eclipse上开发的一个使用NDK开发的android项目转移到AndroidStudio上,在2.2之前对C/C++ 支持不是很友好,没有语法提示,编译也不方便等问题,所以期待了的Android Studio 2.2 版本稳定版终于在前段发布,一直未来得及尝试,今天把整个过程记下来,希望能给你有所帮助。 参考文献:https://developer.android.com/studio/projects/add-native-code.html#create-sources     Continue Reading
Xiho's avatar
Xiho Oct 19, 2016
 | 

Android NDK 开发(四)JNI 中局部引用、全局引用和弱全局引用

前言做过Java的朋友都知道,内存管理这一块是完全透明的,new一个类的实例时,只知道创建完这个类的实例后,会返回这个实例的一个引用,然后拿着这个引用去访问它的成员了(属性、方法),完全不用管JVM内部怎么实现的,如何为新建的对象申请内存,使用完之后如何释放内存,只需要知道有个垃圾回收器在处理这些事情就行了,然而,从Java虚拟机创建的对象传到C/C++代码时会产生引用,根据Java的垃圾回收机制,只要有引用存在就不回触发该引用所指向Java对象的垃圾回收;这些引用在JNI 中分为3种:全局引用(Global Reference)、局部引用 (Local Reference)、弱全局引用 (Week Global Reference) since JDK1.2。 正文三种引用的区别1、全局引用全局引用可以跨方法、跨线程使用,直到被开发者显式释放。类似局部引用,一个全局引用在被释放前保证引用对象不被GC回收。和局部引用不同的是,没有那么多函数能够创建全局引用。能创建全局引用的函数只有 NewGlobalRef。以下例子说明了如何使用一个全局引用。 java native方法: public native void createGlobalRef(); public native String getGlobalRef(); public native void deleteGlobalRef();     Continue Reading
Xiho's avatar
Xiho Oct 18, 2016
 | 

Android NDK开发(三)C访问Java属性和方法

前言native方法虽然是native的,但毕竟是方法,那么就应该同其他方法一样,能够访问类的属性和方法。实际上,JNI的确可以做到这一点,我们通过几个例子来说明~ 正文继 Android NDK 开发(二)JNI 传递参数和返回值之后。 1.访问类方法初始化了Java虚拟机后,就可以开始调用Java的方法。要调用一个Java对象的方法必须经过几个步骤: 1.1获取指定对象的类定义(jclass)有两种方式来获取对象的类定义:第一种是在已知类名的情况下使用FindClass来查找对应的类。但是要注意类名并不同于平时写的Java代码,例如要得到类jni.test.Demo的定义必须调用如下代码: jclass cls = (*env)->FindClass(env, "jni/test/Demo"); //把点号换成斜杠 第二种是通过对象直接得到其所对应的类定义: jclass cls = (*env)-> GetObjectClass(env, obj); //其中obj是要引用的对象,类型是jobject     Continue Reading
Xiho's avatar
Xiho Oct 06, 2016
 | 

Android NDK开发(二)JNI传递参数和返回值

前言我们在使用 JNI 时最常问到的是 JAVA 和 C/C++之间如何传递数据,以及数据类型之间如何 互相映射。我们从整数等基本类型和数组、字符串等普通的对象类型开始讲述。至于如何传递任意对象,将在后面会更新。 正文继JNI简介及调用流程这篇文章,我们再来实现一个非静态的native方法。 Java端: public class JniTest { //静态的 public native static String getStringFromC(); //非静态的 public native String getString2FromC(int i); public static void main(String[] args) { String text = getStringFromC(); System.out.println(text); JniTest t = new JniTest(); text = t.getString2FromC(6); System.out.println(text); } //加载动态库 static{ System.loadLibrary("jni_study"); } }     Continue Reading
Xiho's avatar
Xiho Oct 06, 2016
 | 

【Linux 系统编程】shell 脚本基础学习之函数(五)

前言Linux shell脚本基础学习我们这里就差不多讲完了,函数相信大家都不陌生吧,直接入正题吧~ 正文继上篇博客之后 shell 函数Linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell 中函数的定义格式如下: function_name () { list of commands [ return value ] } 说明: 1、函数名前面也可以加上关键字function; 2、函数的返回值,可以显示加:return 返回,如果不加,将以最后一条命令的运行结果作为返回值。     Continue Reading
Xiho's avatar
Xiho Oct 01, 2016
 | 

【Linux 系统编程】shell 输入/输出重定向(四)

前言原本计划国庆节第一天假期休息一天,但是想想自己还有很多事情没有完成,就立马打开电脑,开始干活了。打算这7天的假期好好整理下之前学的知识和巩固练习,充实每一天,好了入正题,Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续,Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。 原文链接请标明:http://xuhaoblog.com/linux/shell-script-04.html本文出自:【stromxu的博客】 正文接着上一篇继续… 1、Shell 输入/输出重定向重定向命令列表如下: 命令 说明 command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file 将输出以追加的方式重定向到 file。 n > file 将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。     Continue Reading
Xiho's avatar
Xiho Oct 01, 2016
 | 

【Linux 系统编程】shell 流程控制loop和引号(三)

前言Linux shell 脚本基础学习第三篇;上一篇Liunx shell 脚本基础学习中,我们讲到了Linux shell 脚本中控制流程的if、select、case,这里接着介绍Linux shell 脚本控制流程的loop和引导,控制流程这部分内容较多,还有一部分是关于here document。 正文继上篇之后 4、looploop 表达式: while ...; do ... done while- loop 将运行一直到表达式测试为真。(will run while the expression that we test for is true.) 关键字“break”用来跳出循环。而关键字“continue”用来不执行余下的部分而直接太偶倒下一个循环。 for-loop 表达式查看一个字符串列表(字符串用空格分隔)然后将其赋给一个变量: for var in ....; do .... done     Continue Reading
Xiho's avatar
Xiho Sep 30, 2016
 |