android平台获取手机IMSI、IMEI 、序列号和手机号的方法

该日志由 samool 发表于 2016-01-07 10:54:50

android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法

1)获取运营商sim卡imsi号:
String android_imsi = telephonyManager.getSubscriberId();//获取手机IMSI号

String IMSI = android.os.SystemProperties.get(

          android.telephony.TelephonyProperties.PROPERTY_IMSI);

2)获取IME标识两种方法(手机唯一的标识)
String imei = ((TelephonyManager) context.getSystemService(TELEPHONY_SERVICE)).getDeviceId();

String IMEI = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI)

不过纯APP开发SystemProperties,TelephonyProperties汇报错误,因为android.os.SystemProperties在SDK的库中是没有的,需要把Android SDK 目录下data下的layoutlib.jar文件加到当前工程的附加库路径中,就可以Import。

如果Android Pad没有IMEI,用此方法获取设备ANDROID_ID:
String android_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);

  1. 获取手机号
    TelephonyManager tm= (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    String number = tm.getLine1Number();

如下使用例子:
public static String getIMEI() {

return ((TelephonyManager) AppXiKang.getApp().getSystemService(
Context.TELEPHONY_SERVICE)).getDeviceId();

}

public static String getAndroidId() {

return android.provider.Settings.Secure.getString(
AppXiKang.getApp().getContentResolver(), 
android.provider.Settings.Secure.ANDROID_ID);

}

public static String getSimSerialNumber() {

return ((TelephonyManager) AppXiKang.getApp().getSystemService(
Context.TELEPHONY_SERVICE)).getSimSerialNumber();

}

public static String getSerialNumber1() {

return android.os.Build.SERIAL;

}

/**

  • getSerialNumber
  • @return result is same to getSerialNumber1()
    */
    public static String getSerialNumber(){
    String serial = null;
    try {
    Class<?> c = Class.forName("android.os.SystemProperties");

     Method get = c.getMethod("get", String.class);
     serial = (String) get.invoke(c, "ro.serialno");

    } catch (Exception e) {

     e.printStackTrace();

    }
    return serial;
    }

public static void displayDevice(){

String dest_imei = getIMEI();
String androidId = getAndroidId();
Log.i(TAG, "isTestDevice: " 
       +" \nIMEI:"+dest_imei
+" \nANDROID ID:" + androidId 
+" \nSerialNumber:" + getSerialNumber()
+" \nSimSerialNumber:" + getSimSerialNumber()
);

}
运行结果示例:
IMEI:868331011992179
ANDROID ID:5a3b287f2b13bef8
SerialNumber:021YLJ212C001879
SimSerialNumber:898600810110

  1. 获取一个能唯一标识每台Android设备的序号与服务器通信

所以如果你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。但很明显暴露了DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特定设备,例如,使用
String.hashCode() ,结合UUID:

String getuniqueId(){

            TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

String imei=tm.getDeviceId();
String simSerialNumber=tm.getSimSerialNumber();
String androidId = android.provider.Settings.Secure.getString(
getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid =new UUID(androidId.hashCode(), ((long)imei.hashCode() << 32) | simSerialNumber.hashCode());
String uniqueIuniqueId d = deviceUuid.toString();
returnuniqueId;
}

最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-0000-000046bffd97

得到设备独一无二的标识: 可以用于客户端与服务端通信的唯一标识

该日志标签: Android

Android TextView添加滚动条

该日志由 samool 发表于 2014-05-09 15:47:00

向android TextView添加滚动条,在网上查了一下,有两种方法,直接添属性和代码的不行,只有增加布局这个经测试是OK,增另一个Scrollview就可以了。

《ScrollView

android:layout_width="fill_parent"  
android:layout_height="wrap_content" 》   
《TextView  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:textSize="50dp"  
    android:text="a\na\na\na\na\na\na\na\na\na\na\na\na\na\n" /》

《/ScrollView》

该日志标签: Android, 滚动条

Android TextView换行问题

该日志由 samool 发表于 2014-03-25 10:38:23

<1>如果直接在XML文件中写入"aaaaa\nbbbb"可以换行。
<2>在Java文件中用textViewObj.setText("aaaa\nbbbb")也可以换行。
<3>将数据封装到模型类后,在Java文件中使用textViewObj.setText(obj.getXXX()).
在android的模拟器界面上显示没有换行的"aaaaa\nbbbb",'\n'没有转义成换行。

解决办法:
定义换行字符为“|”,然后在android代码中替换为换行符“\n”
TextView mTextView = new TextView(this);
mTextView.setText((currentQuestion.getDisplayName().replace("|","\n")))

该日志标签: Android

凯立德导航C-Car版3.0(android版自适应分辨率)

该日志由 samool 发表于 2013-09-06 17:26:36

凯立德导航C-Car版3.0(android版自适应分辨率) 适合所有android系统版本,能够自动适应所有分辨率,目前最高的1920*1080也能正常使用,S4   I9500,I9508测试OK,非常流畅无卡顿,适合android手机,android平板。现在最新出的c-car4.0在手机很卡,还是3.0好用,搜星速度很快,正常情况下,启动软件后1-2分钟即可定位。

凯立德2C21J0C版本导航电子地图在凯立德2921J0B版的基础上,进行了大范围的更新、 维护,更新维护道路里程超过百万公里,新增道路约35万公里;更新维护的 POI超过两百万,新增POI96万,涉及全国29个省、直辖市、自治区。提升了数据的准确性和保证了数据的现势性。

数据采集更新截止日期:2012年8月。

安装方法:将下载的压缩包解压后,把NaviOne 文件夹直接复制到SD卡,然后用手机打开已授权__CldNavi_C2342-D5G05.apk 安装即可。

注:压缩包共2.89G,解压后3.12G,包含全国离线地图,不需要耗费流量。

下载地址:http://pan.baidu.com/share/link?shareid=3183154822&uk=956622825

启动界面:

Screenshot_2013-09-06-17-12-48.png

阅读剩余部分...

该日志标签: 下载, Android, 凯立德导航, 凯立德, 最新地图包, 一键安装

android 删除文件

该日志由 samool 发表于 2013-07-26 13:29:22

public void deleteFile(File file) {

if (file.exists()) { // 判断文件是否存在

if (file.isFile()) { // 判断是否是文件

file.delete(); // delete()方法 你应该知道 是删除的意思;

} else if (file.isDirectory()) { // 否则如果它是一个目录

File files[] = file.listFiles(); // 声明目录下所有的文件 files[];

for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件

this.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代

}

}

file.delete();

} else {

Constants.Logdada("文件不存在!"+"\n");

}

}

该日志标签: Android, 文件删除

android bitmap的放大缩小

该日志由 samool 发表于 2013-07-26 13:28:46

private static Bitmap big(Bitmap bitmap) {

  Matrix matrix = new Matrix();

  matrix.postScale(1.5f,1.5f); //长和宽放大比例

  matrix.postScale(0.8f,0.8f); //长和宽缩小的比例

  Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);

  return resizeBmp;

 }

 

该日志标签: Android, bitmap

Android MediaPlayer使用方法

该日志由 samool 发表于 2013-02-16 13:32:06

1)如何获得MediaPlayer实例:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了

2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件
例如:mp.setDataSource("http://XXXX.com/confucius.mp3");
MediaPlayer的setDataSource一共四个方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
其中使用FileDescriptor时,需要将文件放到与res文件夹平级的assets文件夹里,然后使用:
AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
来设置datasource

3)对播放器的主要控制方法:
Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()和stop()比较简单,起到暂停和停止播放的作用,

seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。

4)设置播放器的监听器:
MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,
如: setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、
setOnErrorListener(MediaPlayer.OnErrorListener listener)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。

 

该日志标签: mp3, Android, 播放

Android软件图标的几种大小

该日志由 samool 发表于 2013-01-07 22:04:18

为了适应不同的手机屏幕大小和分辨率,android工程中准备了几种程序图标的大小。

程序的图标被命名为 icon.png 。

几种大小的图标分别放置在项目的res目录下的几个子目录中,目录和图标大小分别是:

drawable-xhdpi 96*96
drawable-mdpi 48*48
drawable-ldpi 36*36
drawable-hdpi 72*72

该日志标签: Android, icon, dpi

谷歌发布Android 4.2系统

该日志由 samool 发表于 2012-10-30 08:38:30

Android4.2继续沿用Jelly Bean(果冻豆)的名称,支持平板以及手机设备。Android4.2整体方面与Android4.1保持一致,在一些细节方面有所改进,下面我们就先来看一下Android4.2系统有哪方面的提升。

新功能主要包括:

·可拍摄全景照片

·键盘支持滑动输入

·快速设置及账户快速切换

·Gmail支持文字放大

·增加辅助功能:通过手指缩放、平移主屏幕,增加为盲人用户设计的语音输出及手势模式导航

·Miracast支持无线显示共享

·可通过Google Now查看Gmail、航班信息、提示重要活动。

在iOS6系统中苹果就在系统中加入了全景拍照的功能,可见目前全景拍照是很多用户使用频率非常高的一项拍照方式,所以在此次的Android系统更新当中,加入全景拍照功能也是非常有必要的。

在手机的输入界面,用户可以连续在键盘上滑动,手机将会根据滑动的轨迹识别出输入的文字,这种输入方式将会提升输入的速度,当然,初次使用该功能在输入准确度方面可能会比较差,熟悉之后就会有较为不错的输入体验。

在手机的通知界面,用户可以快速跳转到设置界面,在通知界面还可以切换手机不同的使用模式。原来切换账户的时候必须要在设置界面完成,现在在解锁界面也可以快速的切换不同的账户。

Miracast功能可以将手机中的游戏或者视频通过无线的方式将画面投射到兼容的电视上,分享变得更加简单。

升级后的Google Now可以大大降低手机日历功能的使用频率,因为在重要日期来临之前,它都会进行提示。

通知栏改进

Android4.2 系统的整体改进并不明显,但是新加入的这些功能都是比较实用的,该系统将会直接内置在Nexus 4以及Nexus 10当中,在未来几周之内,GALAXY Nexus以及Nexus 7将会收到系统升级提示,至于其他Android设备的系统升级日期暂时还无法确定。

该日志标签: 谷歌, Android

Android 4.1.2源码今天将发布

该日志由 samool 发表于 2012-10-10 18:46:58

Google Android开放源代码计划(Android Open Source Project,简称AOSP)主管Jean-Baptiste Queru今天通过Android Building发布消息称,Android 4.1.2的源码将于今天之内发布到AOSP(http://source.android.com/)上,他将这次版本更新称为小幅(minor)更新。

据悉,本次更新版本号位JZO54K,AOSP标签为android-4.1.2_r1。与之前的安卓4.1.1版本相比,安卓4.1.2所进行的改变并不大,Google修复了之前已知的一些BUG,同时对界面和性能进行了优化,而且终于使Nexus 7可以横屏使用了。除此之外,Google并没有进行太大的改动。

该日志标签: 源码, google, Android