针对Android获取手机位置代码实现和安卓获取手机定位代码这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android--------获取手机设备信息、Android下获取手机通讯录信息
针对Android获取手机位置代码实现和安卓获取手机定位代码这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android -------- 获取手机设备信息、Android 下获取手机通讯录信息、Android 实现获取手机里面的所有图片详解及实例、Android 手机获取手机号实现方法等相关知识,希望可以帮助到你。
本文目录一览:- Android获取手机位置代码实现(安卓获取手机定位代码)
- android -------- 获取手机设备信息
- Android 下获取手机通讯录信息
- Android 实现获取手机里面的所有图片详解及实例
- Android 手机获取手机号实现方法
Android获取手机位置代码实现(安卓获取手机定位代码)
下面是小编 jb51.cc 通过网络收集整理的代码片段。
小编小编现在分享给大家,也给大家做个参考。
1、项目Src下创建...service包,然后新建GPSService类
package com.zebra.mobilesafe.service; import java.io.IOException; import java.io.InputStream; import android.app.Service; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.util.Log; public class GPSService extends Service { private static final String TAG = "GPSService"; // 用到位置服务 private LocationManager lm; private MyLocationListener listener; @Override public IBinder onBind(Intent intent) { // Todo Auto-generated method stub return null; } @Override public void onCreate() { // Todo Auto-generated method stub super.onCreate(); Log.i(TAG,"====进入GPS=="); lm = (LocationManager) getSystemService(LOCATION_SERVICE); // List<String> provider = lm.getAllProviders(); // for(String l: provider){ // System.out.println(l); // } listener = new MyLocationListener(); // 注册监听位置服务 // 给位置提供者设置条件 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置参数细化: // criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度 // criteria.setAltituderequired(false);//不要求海拔信息 // criteria.setbearingrequired(false);//不要求方位信息 // criteria.setCostAllowed(true);//是否允许付费 // criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求 String proveder = lm.getBestProvider(criteria,true); lm.requestLocationUpdates(proveder,listener); } @Override public void onDestroy() { super.onDestroy(); // 取消监听位置服务 lm.removeUpdates(listener); listener = null; } class MyLocationListener implements LocationListener { /** * 当位置改变的时候回调 */ @Override public void onLocationChanged(Location location) { String longitude = "j:" + location.getLongitude() + "\n"; String latitude = "w:" + location.getLatitude() + "\n"; String accuracy = "a" + location.getAccuracy() + "\n"; // 发短信给安全号码 // 把标准的GPS坐标转换成火星坐标 // InputStream is; // try { // is = getAssets().open("axisoffset.dat"); // ModifyOffset offset = ModifyOffset.getInstance(is); // PointDouble double1 = offset.s2c(new PointDouble(location // .getLongitude(),location.getLatitude())); // longitude ="j:" + offset.X+ "\n"; // latitude = "w:" +offset.Y+ "\n"; // // } catch (IOException e) { // // Todo Auto-generated catch block // e.printstacktrace(); // } catch (Exception e) { // // Todo Auto-generated catch block // e.printstacktrace(); // } SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE); Editor editor = sp.edit(); editor.putString("lastlocation",longitude + latitude + accuracy); editor.commit(); } /** * 当状态发生改变的时候回调 开启--关闭 ;关闭--开启 */ @Override public void onStatusChanged(String provider,int status,Bundle extras) { // Todo Auto-generated method stub } /** * 某一个位置提供者可以使用了 */ @Override public void onProviderEnabled(String provider) { // Todo Auto-generated method stub } /** * 某一个位置提供者不可以使用了 */ @Override public void onProviderdisabled(String provider) { // Todo Auto-generated method stub } } }
2、AndroidManiFest.xml添加类
3、添加权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
4、根据操作启动服务
Intent i = new Intent(context,GPSService.class); context.startService(i);
以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。
android -------- 获取手机设备信息
最近在开发中,需要用到一些系统信息,总结了一下
/**
* Created by zhangqie on 2019/2/26
* Describe: 系统工具类
*/
public class EquipmentUtil {
/**
* 获取当前手机系统语言。
*
* @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
*/
public static String getSystemLanguage() {
return Locale.getDefault().getLanguage();
}
/**
* 获取当前系统上的语言列表(Locale列表)
*
* @return 语言列表
*/
public static Locale[] getSystemLanguageList() {
return Locale.getAvailableLocales();
}
/**
* 获取当前手机系统版本号
*
* @return 系统版本号
*/
public static String getSystemVersion() {
return android.os.Build.VERSION.RELEASE;
}
/**
* 获取手机型号
*
* @return 手机型号
*/
public static String getSystemModel() {
return android.os.Build.MODEL;
}
/**
* 获取手机设备名
*
* @return 手机设备名
*/
public static String getSystemDevice() {
return Build.DEVICE;
}
/**
* 获取手机厂商
*
* @return 手机厂商
*/
public static String getDeviceBrand() {
return android.os.Build.BRAND;
}
/**
* 获取手机主板名
*
* @return 主板名
*/
public static String getDeviceBoand() {
return Build.BOARD;
}
/**
* 获取手机厂商名
*
* @return 手机厂商名
*/
public static String getDeviceManufacturer() {
return Build.MANUFACTURER;
}
/**
* 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
*
* @return 手机IMEI
*/
public static String getIMEI(Context ctx) {
/*TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
if (tm != null) {
return tm.getDeviceId();
}*/
return null;
}
}
String TAG = "系统参数:";
Log.i(TAG, "手机厂商:" + EquipmentUtil.getDeviceBrand());
Log.i(TAG, "手机型号:" + EquipmentUtil.getSystemModel());
Log.i(TAG, "手机当前系统语言:" + EquipmentUtil.getSystemLanguage());
Log.i(TAG, "Android系统版本号:" + EquipmentUtil.getSystemVersion());
Log.i(TAG, "手机设备名:" + EquipmentUtil.getSystemDevice());
Log.i(TAG, "主板名:" + EquipmentUtil.getDeviceBoand());
Log.i(TAG, "手机厂商名:" + EquipmentUtil.getDeviceManufacturer());
打印日志:
Android 下获取手机通讯录信息
参考:http://www.2cto.com/kf/201409/336307.html
第一步:我们可以在File Explorer视图下找到contacts2.db文件,这是通讯录的文件
将其导入SQLite中查看raw-contacts表
data表
mimetype表
根据raw-contacts表中的_id键与data表中的raw_contact_id键进行数据的定位
,再根据data表中的获得数据的类型
直接贴代码
package com.zaizai.safty;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取联系人
* Created by zaizai on 2015/10/29.
*/
public class SelectContactActivity extends Activity {
private static final String TAG = "zaizai";
private ListView listSelectContact;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_contact);
listSelectContact = (ListView) this.findViewById(R.id.list_select_contact);
/*注意数据在内部类中使用,需设置为final类型,因为如果当在加载过程中如果data里的数据变化了,会产生数据异常*/
final List<Map<String, String>> data = getContactInfo();
listSelectContact.setAdapter(new SimpleAdapter(this, data, R.layout.contact_item_view, new String[]{"name", "phone"}, new int[]{R.id.tv_name, R.id.tv_phone}));
listSelectContact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String phone = data.get(position).get(BaseSetupActivity.PHONE);
/*将号码以Intent的形式返回*/
Intent data = new Intent();
data.putExtra(BaseSetupActivity.PHONE, phone);
/*RESULT_OK为返回的状态吗,接收方通过状态码进行数据的判断*/
setResult(Activity.RESULT_OK, data);
/*关闭当前页面*/
SelectContactActivity.this.finish();
}
});
}
/**
* 读取手机里面的联系人
*
* @return
*/
private List<Map<String, String>> getContactInfo() {
/*用来临时存储联系人*/
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
/*1、得到内容解析器*/
ContentResolver resolver = this.getContentResolver();
/*2、查询数据库*/
//打得到raw_contacts表,
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
/*获得data表*/
Uri uriData = Uri.parse("content://com.android.contacts/data");
Cursor cursor = resolver.query(uri, new String[]{"contact_id"}, null, null, null);
while (cursor.moveToNext()) {
/*得到联系人ID*/
String contact_id = cursor.getString(0);
if (contact_id != null && contact_id.length() > 0) {
/*得到一个联系人*/
Map<String, String> map = new HashMap<String, String>();
/*查询data表中的data1和mimetype两列的数据*/
Cursor cursorData = resolver.query(uriData, new String[]{"data1", "mimetype"}, "contact_id=?", new String[]{contact_id}, null);
while (cursorData.moveToNext()) {
String data1 = cursorData.getString(0);
String mimetype = cursorData.getString(1);
Log.i(TAG, "data1=" + data1 + "mimetype = " + mimetype);
if ("vnd.android.cursor.item/name".equals(mimetype)) {
/*联系人姓名*/
map.put(BaseSetupActivity.NAME, data1);
}
if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
/*联系人电话号码*/
map.put(BaseSetupActivity.PHONE, data1);
}
}
list.add(map);
cursorData.close();
}
}
cursor.close();
return list;
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:textColor="@android:color/holo_red_dark"
android:textSize="22sp" />
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_call"
android:text="558" />
</LinearLayout>
Android 实现获取手机里面的所有图片详解及实例
Android 实现获取手机里面的所有图片详解及实例
实现代码:
public class MainActivity extends Activity { //查看图片按钮 private Button look; private Button add; //显示图片名称的list ListView show_list; ArrayList names = null; ArrayList descs= null; ArrayList fileNames = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); look = (Button) findViewById(R.id.look); add = (Button) findViewById(R.id.add); show_list = (ListView) findViewById(R.id.show_list); look.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { names = new ArrayList(); descs = new ArrayList(); fileNames = new ArrayList(); Cursor cursor = getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null); while (cursor.movetoNext()) { //获取图片的名称 String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.disPLAY_NAME)); //获取图片的生成日期 byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); //获取图片的详细信息 String desc = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DESCRIPTION)); names.add(name); descs.add(desc); fileNames.add(new String(data,data.length - 1)); } List<Map<String,Object>> listItems = new ArrayList<>(); for (int i = 0; i < names.size(); i++) { Map<String,Object> map = new HashMap<>(); map.put("name",names.get(i)); map.put("desc",descs.get(i)); listItems.add(map); } //设置adapter SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,listItems,R.layout.line,new String[]{"name","desc"},new int[]{R.id.name,R.id.desc}); show_list.setAdapter(adapter); } }); ///list的点击事件 show_list.setonItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView,View view,int i,long l) { View viewDiag = getLayoutInflater().inflate(R.layout.view,null); ImageView image = (ImageView)viewDiag.findViewById(R.id.image); image.setimageBitmap(BitmapFactory.decodeFile((String) fileNames.get(i))); new AlertDialog.Builder(MainActivity.this).setView(viewDiag) .setPositiveButton("确定",null).show(); } }); } }
XML:
<!--获取手机存储卡权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Android 手机获取手机号实现方法
最近做到一个项目,需要获取手机号。项目中使用的手机卡为电信卡,那么就以此为例吧。
网上不符合需求的方法
Google了一下,网上的做法如下:
//获取手机号码 TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String deviceid = tm.getdeviceid();//获取智能设备唯一编号 String te1 = tm.getLine1Number();//获取本机号码 String imei = tm.getSimserialNumber();//获得SIM卡的序号 String imsi = tm.getSubscriberId();//得到用户Id
添加权限:
<uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
以上做法有可能获取sim卡号,但是现在最起码在电信手机卡上获取不到。
原因好像、似乎是:
手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是imsI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM卡丢失后,补办一张新的会换号码吗?是不会的.就是因为在你的手机号码对应的imsI号 在移动运营商中被修改成新SIM卡的imsI号码。
那么我们怎么解决这个问题呢?
不好实现?一个原因搞定你:项目需要!!
查了下手机的基本信息那一栏里,也没有找到手机号,看来手机中似乎没有存储这手机号。那么我就只有使用变通的手法来获取手机号了。
就是给10001发送一个短信,找了一下,发个501查询套餐情况就可以。10001会给你个反馈信息,其中包含手机号码
那么我们发送短信,然后监听得到此短信,然后分解字符串那么就可以得到手机号了。
如果是联通或者移动应该也是有类似的情况。何况给他们发短信应该不会收费。。。O(∩_∩)O~
程序如何实现?
1.监听短信类
package com.example.smsmanager; import android.content.broadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; public class SMS_Receiver extends broadcastReceiver { final String GetNumberAddress="10001"; @Override public void onReceive(Context context,Intent intent) { // Todo Auto-generated method stub if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ Object[] pdus=(Object[])intent.getExtras().get("pdus"); //不知道为什么明明只有一条消息,传过来的却是数组,也许是为了处理同时同分同秒同毫秒收到多条短信 //但这个概率有点小 SmsMessage[] message=new SmsMessage[pdus.length]; StringBuilder sb=new StringBuilder(); System.out.println("pdus长度"+pdus.length); String address=""; for(int i=0;i<pdus.length;i++){ //虽然是循环,其实pdus长度一般都是1 message[i]=SmsMessage.createFromPdu((byte[])pdus[i]); sb.append("接收到短信来自:\n"); address=message[i].getdisplayOriginatingAddress(); sb.append(address+"\n"); sb.append("内容:"+message[i].getdisplayMessageBody()); } System.out.println(sb.toString()); if(SMscore.PhoneNumber==""&&address.equals(GetNumberAddress)){ SMscore.PhoneNumber=SMscore.getPhoneNumberFromSMSText(sb.toString()); Messagetools.ShowDialog(context,address); } Messagetools.ShowDialog(context,sb.toString().trim()); Messagetools.ShowDialog(context,SMscore.PhoneNumber); } } }
2.短信操作类
package com.example.smsmanager; import java.sql.Date; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.view.View; import android.view.View.OnClickListener; import android.content.broadcastReceiver; import android.app.Activity; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.telephony.SmsManager; import android.util.Log; import android.content.Contextwrapper; public class SMscore { public static String PhoneNumber=""; //==============Get Phone Number ============================== //get the phone number from sms public static String getPhoneNumberFromSMSText(String sms){ List<String> list=GetNumberInString(sms); for(String str:list){ if(str.length()==11) return str; } return ""; } public static List<String> GetNumberInString(String str){ List<String> list=new ArrayList<String>(); String regex = "\\d*"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); while (m.find()) { if (!"".equals(m.group())) list.add(m.group()); } return list; } //=========================================================== // // //=============Send SMS================ public void SendSMS(String number,String text,Context context){ PendingIntent pi = PendingIntent.getActivity(context,new Intent(context,context.getClass()),0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(number,null,text,pi,null); } public void SendSMS2(String number,Context context){ String SENT = "sms_sent"; String DELIVERED = "sms_delivered"; PendingIntent sentPI = PendingIntent.getActivity(context,new Intent(SENT),0); PendingIntent deliveredPI = PendingIntent.getActivity(context,new Intent(DELIVERED),0); // // // // registerReceiver(new broadcastReceiver(){ // @Override // public void onReceive(Context context,Intent intent){ // switch(getResultCode()) // { // case Activity.RESULT_OK: // Log.i("====>","RESULT_OK"); // System.out.println("RESULT_OK"); // // break; // case Activity.RESULT_CANCELED: // Log.i("=====>","RESULT_CANCELED"); // break; // } // } // },new IntentFilter(DELIVERED)); // // SmsManager smsm = SmsManager.getDefault(); smsm.sendTextMessage(number,sentPI,deliveredPI); } //===================================== }
3.弹出框操作类
package com.example.smsmanager; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; public class Messagetools { public static void ShowDialog(Context context,String text){ AlertDialog.Builder builder = new Builder(context); builder.setMessage(text); builder.setTitle("提示"); builder.setPositiveButton("确认",new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); dialog.dismiss(); } }); builder.setNegativeButton("取消",int which) { dialog.dismiss(); } }); builder.create().show(); } }
4.调用如下:
// private static final String ACTION_SMS_SEND = "lab.sodino.sms.send"; private static final String ACTION_SMS_DELIVERY = "lab.sodino.sms.delivery"; private static final String ACTION_SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";
// 注册接收下行receiver SMS_Receiver smsReceiver= new SMS_Receiver(); IntentFilter receiverFilter = new IntentFilter(ACTION_SMS_RECEIVER); registerReceiver(smsReceiver,receiverFilter); //发送短信 SMscore smscore=new SMscore(); smscore.SendSMS2("10001","501",context);
运行结果:
我们可以得到了想要的手机号码了!
以上就是Android 获取手机号的实现代码,希望能帮助有需要的朋友,谢谢大家对本站的支持!
今天关于Android获取手机位置代码实现和安卓获取手机定位代码的介绍到此结束,谢谢您的阅读,有关android -------- 获取手机设备信息、Android 下获取手机通讯录信息、Android 实现获取手机里面的所有图片详解及实例、Android 手机获取手机号实现方法等更多相关知识的信息可以在本站进行查询。
本文标签: