标签:mediaplayer 定位技术 android项目 手机安全卫士
播放报警音乐
1.把音乐文件放在res/raw文件中
2.创建MediaPlayer对象
MediaPlayer player = MediaPlayer.create(Context,R.raw.*);
3.设置声音为最高:
player.setVolume(1.0f,1.0f);
4.设置声音为循环播放:
player.setLooping(true);
代码:
//报警音乐
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.alarm);
//音量调成最高
mediaPlayer.setVolume(1.0f,1.0f);
//循环播放
mediaPlayer.setLooping(true);
//开始播放
mediaPlayer.start();
GPS定位
1.定位方式:
网络定位 基站定位 GPS定位
(1)网络定位 WiFi 2g 3g
得到IP地址 ,根据IP地址确定其大概方位
误差很大
(2)基站定位
定位的精确度取决于基站的数量
(3)GPS定位
通过卫星定位。
适用于在空旷的场地
A-GPS
缩短定位时间 、降低耗电量、提升定位灵敏度
精确度高 15m左右
定位功能的代码实现:
1.创建一个类:GPSService,继承自Service
2.在清单列表中注册
3.在onCreate()方法中进行获取位置的操作
创建位置服务
LocationManager manager = getSystemService(LOCATION_SERVICE);
获取最佳位置提供者
设置条件
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
获取最佳位置提供者
String provider = criteria.getBestProvider(criteria,true);
监听位置变化
manager.requestLocationUpdates()
·第一个参数: 定位方式(“gps”)
·第二个参数: 多久更新一次 60000(1分钟)
·第三个参数:多少米更新一次 50
·第四个参数: 接口,监听位置
new LocationListener{
//位置改变时回调
onLocationChanged()
{
String jingdu = “”+location.getLongitude();
String weidu = “”+location.getLatitude();
//精确度
String accuracy = “”+location.getAccuracy();
}
//状态发生改变时回调 从开启到关闭之类的
onStatusChanged()
{
}
//某一个位置提供者可用
onProviderEnabled()
//某一个位置提供者不可用
onProviderDisabled()
}
取消监听:
onDestroy()中:
lm.removeUpdates(listener);
listener = null;
权限: ACCESS_FINE_LOCATION 高精度位置
ACCESS_COARSE_LOCATION 粗略位置
ACCESS_MOCK_LOCATION 模拟器位置
火星坐标系统(国家保密插件)
出于安全战略,我国GPS的定位结果都会有一定的偏移量(无规律的加偏)
//火星坐标转换代码:(网上有,可以降低偏移量,提高精确度)
1.ModifyOffset.getInstance(.class.getResouceAdStream(.dat));
2.PointDouble newdouble1 = offset.s2c(new PointDouble(经度,纬度))
3.longtitude = offset.X;
4.latitude = offset.Y;
最终的代码实现:
GPSService.class
public class GPSService extends Service
{
private SharedPreferences sp;
private SharedPreferences.Editor editor;
private LocationManager manager;
private MyLocalChangedListener listener;
public GPSService() {
}
public IBinder onBind(Intent intent)
{
return new Binder();
}
public void onCreate()
{
super.onCreate();
sp = getSharedPreferences("config",MODE_PRIVATE);
editor = sp.edit();
listener = new MyLocalChangedListener();
//创建定位服务
manager = (LocationManager) getSystemService(LOCATION_SERVICE);
//设置条件
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//获得最佳的位置提供者
String providers = manager.getBestProvider(criteria,true);
//监听位置的变化
manager.requestLocationUpdates(providers,60000,50,listener);
}
public void onDestroy()
{
super.onDestroy();
manager.removeUpdates(listener);
listener = null;
}
public class MyLocalChangedListener implements LocationListener
{
//位置发生变化时回调
public void onLocationChanged(Location location)
{
//1.获取经纬度和精确度
double longitude = location.getLongitude();
double latitude = location.getLatitude();
//2.把普通坐标转换成火星坐标
InputStream is = GPSService.class.getResourceAsStream("axisoffset.dat");
try
{
ModifyOffset modify = ModifyOffset.getInstance(is);
PointDouble pointDouble = modify.s2c(new PointDouble(longitude,latitude));
String longitudeTrue = pointDouble.x+"";
String latitudeTrue = pointDouble.y+"";
//保存经纬度
editor.putString("location","经度:"+longitudeTrue+"\n纬度:latitude");
editor.commit();
}
catch (Exception e)
{
e.printStackTrace();
}
}
//状态发生变化时回调
public void onStatusChanged(String provider, int status, Bundle extras) {
}
//位置提供者可用时回调
public void onProviderEnabled(String provider) {
}
//位置提供者不可用时回调
public void onProviderDisabled(String provider) {
}
}
}
在SmsReceiver中
//获得定位
String number = sp.getString("safeNumber",null);
Intent intent1 = new Intent(context, GPSService.class);
context.startService(intent1);
String location = sp.getString("location",null);
//发送短信
if(TextUtils.isEmpty(location))
{ SmsManager.getDefault().sendTextMessage(number,null,"位置正在获取中,请稍后。。。",null,null);
}
else
{ SmsManager.getDefault().sendTextMessage(number,null,location,null,null);
}
百度定位和Google官方好像都提供了定位框架,做完这个项目之后学一下~~~
版权声明:刚出锅的原创内容,希望对你有帮助~
手机安全卫士------手机防盗页面之播放报警音乐&GPS定位
标签:mediaplayer 定位技术 android项目 手机安全卫士
原文地址:http://blog.csdn.net/liangyu2014/article/details/47071983