LocationManagerAndroid上的API似乎对于仅需要偶尔粗略估计用户位置的应用程序来说有点痛苦.
我正在处理的应用程序本身并不是一个位置应用程序,但它确实需要获取用户的位置才能显示附近的商家列表.它不需要担心用户是否在移动或类似的东西.
这是我想做的事情:
ActivityX中需要它时,它将可用.看起来它应该不那么难,但在我看来,我必须启动两个不同的位置提供商(GPS和NETWORK)并管理每个生命周期.不仅如此,我还必须在多个活动中复制相同的代码以满足#2.我曾尝试过使用getBestProvider()过去将解决方案缩减为只使用一个位置提供商,但这似乎只能为您提供最好的"理论"提供商,而不是实际上会给您带来最佳结果的提供商.
有没有更简单的方法来实现这一目标?
我想构建一个以获取用户当前位置为中心的应用程序,然后通过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) 我需要Google Maps在Android中开发一个应用程序来定位我当前的位置并需要找到最近的位置.
(例如:我当前所在地附近的警察局.)
它应该接受我当前的位置和输出应该显示最近的地方.
任何人都可以帮我提一些建议,链接,教程吗?
干杯,我正试图通过Android获得当前的GPS位置.我也遵循了本教程和Vogellas的文章.虽然它不起作用.当使用LocationManager.NETWORK_PROVIDER时,无论我站在哪里,我总是得到51的纬度和9的经度.使用LocationManager.GPS_PROVIDER时,我什么都没得到.
虽然使用GMaps时一切正常:S不知道为什么.如何像GMaps一样获得当前的GPS位置?
这是我的代码:
package com.example.gpslocation;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
public class GPS_Location extends Activity implements LocationListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps__location);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.gps__location, menu);
return true;
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我正在使用内置的地理围栏API(播放服务),并且结果好坏参半.看起来在设置地理围栏之后,即使GPS打开,进入/退出的通知也非常不一致,具有最新位置(连接了LocationClient,在后台运行.)我开始监控(轮询)位置变化和调试文本字段中的距离,并且即使基于设备注册的位置和地理围栏的位置(我在技术上是在地理围栏的内部/外部),通常有时会触发通知,有时也不会.有什么方法可以让它更具可预测性?我几乎想要放弃这个api并根据设备位置的轮询实现我自己的(电池耗尽)地理围栏.
这是其中之一"肯定有一些通用实用程序比我提出的快速和肮脏的东西更好"问题.就像我一样,我知道如何以几种临时方式做到这一点,但是我喜欢使用标准.
简介:我正在寻找合理的标准和无处不在的工具来确定我目前的地理位置.可从Linux/UNIX命令行,Perl,Emacs等调用.
详情:
一个微不足道的情况激发了这个问题(但毫无疑问,更重要的应用程序):我使用emacs org-mode,经常记录日志或日记.我实际上并没有太多使用官方组织模式日记 - 主要是,我将时间戳放在普通的组织模式日志中,隐藏在看起来像链接的元数据中.
[[metadata: timestamp="<2014-01-04 15:02:35 EST, Saturday, January 4, WW01>" <location location="??" timestamp="??"/>][03:02 PM]]
Run Code Online (Sandbox Code Playgroud)
如你所见,我很久以前就添加了记录我位置的功能.但到目前为止我不得不手动设置它.我很懒,经常忽略手动设置位置.(次要注意:我记录了我最后一次手动设置位置,在移动时有用,而忽略了手动更改我的位置.
我更希望有自动推断我的位置的代码.特别是因为我上个月旅行的时间相当多,但是对于我每天都在这里工作的六个地方来说可能更有用:家庭,工作,海边,标准餐厅,我在吃午餐或早餐. .
我可以使用任何一种工具来计算我的位置,例如
我在哪里 - 在Google地图上查看您当前的位置 - ctrlq.org/maps/where/
Perl CPAN包,例如IP :: Location - 将IP地址映射到某个位置
和启发式,如查看WiFi SSID等.
我已经编写了一些东西.
但是......这比我编码的更深入.
上述技术都不是完美的 - 例如,我可能没有net.connectivity等.有些是特定于操作系统的.
如果已经有一些开源设施,我应该使用它.
因此我的问题是:有没有合理无处不在的地理位置服务?
我的收藏
跨越OS操作
命令行实用程序
可以连接到广泛可用的标准地理定位服务
即使无法连接到标准地理定位服务或Internet,也能正常工作
定制
学到了
如果用户伪造该位置,我将阻止用户使用我的应用.所以我isFromMockProvider用来检查位置是否是假的(按照这里).但isFromMockProvider()在某些情况下可能会为伪造的位置返回false.
public void onLocationChanged(Location location) {
textView.append("long:"+location.getLatitude()+" - lat:"+location.getLongitude()+" - isMock :"+location.isFromMockProvider() + "\n");
}
Run Code Online (Sandbox Code Playgroud)
我的情况是:我使用假冒伪劣GPS定位到一个位置然后我禁用虚假位置并转到我的应用程序.然后onLocationChanged返回假位置isFromMockProvider() = false
录像机:https://www.youtube.com/watch?v = rWVvjOCaZiI(在此视频中,我目前的位置是16.06,108.21,假位置是36.26,138.28.你可以在上一个视频中看到位置是36.26, 138.28但isFromMockProvider = false)
有没有办法检测用户在这种情况下是否使用虚假位置?任何帮助或建议将非常感谢.
DEMO项目
对我来说,实施和学习是一件非常有趣和新鲜的事情.我的申请有一些要求.为此,我搜索了很多,但找不到合适的,有价值的东西或链接.所以我在这里发帖子.功能是:
1)在三星设备中有Safety Assistance菜单,您可以在其中找到Emergency Mode选项.
2)现在Emergency mode我想在那时创建一个或多个主要联系人Emergency Mode.因此,现在在保持主页和音量按钮时,emergency将激活并通知通知.
3)现在emergency将在同一时刻激活GPS将自动启用,并且将自动捕获当前位置的两张照片,最后位置和两张照片将发送到Emergency mode作为主要联系人添加的联系人MMS.
注意:如果将启用录音机选项,则录音文件也将发送MMS.
所以,如果有人知道或有人实施,那么我非常感谢他/她.帮助将不胜感激.
android ×9
gps ×5
geolocation ×4
location ×4
google-maps ×2
java ×2
cygwin ×1
emacs ×1
linux ×1
perl ×1