我需要以编程方式使用GPS获取当前位置.我怎样才能实现它?
在支持Android Cupcake(1.5)的设备上,如何检查并激活GPS?
我知道如何在Android编程开启/关闭GPS的问题已经 被 讨论了 很多 次,得到的答复始终是相同的:
"出于安全/隐私原因,你不能转发到位置首选项屏幕,让用户启用/禁用它."
我明白,但是我最近买塔斯克从市场和,中,你可以用它来完成许多其他的东西,你可以设定规则,在进入预定的应用程序自动启用GPS和禁用它退出(见这里的如何做的教程,它只是工作!)和这个应用程序无法使用固件签名密钥签名,因为它适用于许多Android版本和不同的设备,你甚至不需要扎根.
我想在我的应用程序中执行此操作.当然,我不想破坏用户隐私,因此我首先会询问用户是否要使用典型的"记住我的决定"复选框自动启用它,如果他回答是,则启用它.
有没有人对Tasker如何实现这一点有任何想法或线索?
如何在物理设备(Nexus One)上模拟我的位置?我知道您可以使用"仿真器控制"面板中的仿真器执行此操作,但这对物理设备不起作用.
我正在使用GPS数据,每秒获取值并在地图上显示当前位置.问题是有时(特别是当精度很低时)值变化很大,使当前位置在地图中的远点之间"跳跃".
我想知道一些简单的方法来避免这种情况.作为第一个想法,我考虑过准确地丢弃超过一定阈值的值,但我想还有其他一些更好的方法.程序执行此操作的常用方法是什么?
我想构建一个以获取用户当前位置为中心的应用程序,然后通过Google Places API找到与他/她关系密切的兴趣点(如酒吧,餐馆等).
在网上搜索一个可以开始的地方时,我遇到了一些使用该LocationManager
课程的教程和其他一些使用Google Play服务的教程,以便找到用户所在的位置.
乍一看,他们两个都做同样的事情,但由于我是新手,我有点困惑,我不知道哪种方法最适合我的需要.所以,我想问你:
这两种查找位置的方法(如果有的话)有什么区别?
我在使用Android定位系统的NETWORK提供商获取当前位置坐标时遇到了麻烦.
已经阅读了很多教程,并为我的项目实现了4或5个现有的类,所有这些都给了我最后的坐标但不是当前的坐标.
我很确定问题是我缺少的基本问题,但我无法理解究竟是什么.
我现在使用的代码:
这是我的主要活动
package com.example.locationtests;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GPSTracker mGPS = new GPSTracker(this);
TextView text = (TextView) findViewById(R.id.texts);
if(mGPS.canGetLocation ){
mGPS.getLocation();
text.setText("Lat"+mGPS.getLatitude()+"Lon"+mGPS.getLongitude());
}else{
text.setText("Unabletofind");
System.out.println("Unable");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用于跟踪的课程:
package com.example.locationtests;
import android.app.AlertDialog; …
Run Code Online (Sandbox Code Playgroud) 我想知道如何获得2个GPS点之间的距离和方位.我研究了半胱氨酸配方.有人告诉我,我也可以使用相同的数据找到轴承.
一切都运转良好,但轴承还没有正常工作.轴承输出负值但应在0 - 360度之间.设定数据应该是水平方位,96.02166666666666
并且是:
Start point: 53.32055555555556 , -1.7297222222222221
Bearing: 96.02166666666666
Distance: 2 km
Destination point: 53.31861111111111, -1.6997222222222223
Final bearing: 96.04555555555555
Run Code Online (Sandbox Code Playgroud)
这是我的新代码:
from math import *
Aaltitude = 2000
Oppsite = 20000
lat1 = 53.32055555555556
lat2 = 53.31861111111111
lon1 = -1.7297222222222221
lon2 = -1.6997222222222223
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * …
Run Code Online (Sandbox Code Playgroud) 每次运行应用程序时,我的SecurityException都会被抛出,调试器的错误会如下所示:
java.lang.SecurityException:"gps"位置提供程序需要ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限.
这似乎是一个简单的错误,但是,我的清单文件是完全正确的.在这里,这里也是我的MapActivity代码:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="com.dev.cromer.jason.coverme.permission.MAPS_RECEIVE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value= "@string/google_maps_key" />
<activity
android:name=".MapActivity"
android:label="@string/title_activity_map" >
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
我的活动:
package com.dev.cromer.jason.coverme;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gms.common.ConnectionResult; …
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我希望每隔几分钟获取用户当前位置,并使用Web服务更新到我的中心服务器.目前我正在使用Fused Location Provide获取用户当前位置,请参阅链接
现在我想知道经常获取用户位置和调用Web服务的最佳方法是什么.
下面是我的代码,它给了我用户当前的位置: -
locationrequest = LocationRequest.create();
locationrequest.setInterval(10000);
locationclient.requestLocationUpdates(locationrequest,new com.google.android.gms.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "Last Known Location :" + location.getLatitude() + "," + location.getLongitude());
}
});
Run Code Online (Sandbox Code Playgroud)
现在从哪里我必须调用此代码.我可以在后台服务或其他地方使用它.
请提出你的想法.
TIA.