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

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

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

Posted in Web开发 at January 7, 2016. by 傻猫 .    Views: 3086    No Comments

Android TextView添加滚动条

向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》

Posted in 手机相关 at May 9, 2014. by 傻猫 .    Views: 3965    No Comments

Android TextView换行问题

<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")))

Posted in 手机相关 at March 25, 2014. by 傻猫 .    Views: 3434    No Comments

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

凯立德导航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

查看更多内容...

Posted in 杂七杂八 at September 6, 2013. by 傻猫 .    Views: 7020    1 Comment

android 删除文件

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");

}

}

Posted in 手机相关 at July 26, 2013. by 傻猫 .    Views: 16218    No Comments

android bitmap的放大缩小

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;

 }

 

Posted in 手机相关 at July 26, 2013. by 傻猫 .    Views: 3621    No Comments

Android MediaPlayer使用方法

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)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。

 

Posted in 手机相关 at February 16, 2013. by 傻猫 .    Views: 3485    No Comments

Android软件图标的几种大小

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

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

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

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

Posted in 手机相关 at January 7, 2013. by 傻猫 .    Views: 3444    No Comments