检测定位的 "蓝牙扫描 "是否开启
由于Android m,即使您在位置设置中启用了蓝牙扫描选项,也可以在后台扫描蓝牙设备. P> 为了扫描BLE设备,必须满足以下条件: COARSE_LOCATION或FINE_LOCATION授予权限. 和以下内容之一: 启用全局位置选择器. 蓝牙扫描启用选项(请参阅屏幕截图). 我可以检查权限是否已授予,并且位置选择器的状态恰好.我无法做的是如何检查Bluetooth Scanning选项的状态? 任何见解都非常感谢! 解决方案 经过大量搜索,我终于找到了一种了解状态的方法: try { ContentResolver resolver = getApplicationContext().getContentResolver(); int result = Settings.Global.getInt(resolver,"ble_scan_always_enabled"); if(result == 1) {
如何使用Wifi或GSM或GPS获得粗略的位置,以可用的为准?
我的应用只需要粗糙启动时的位置服务. 详细说明,我需要该应用程序的粗糙位置,以便为用户提供附近的商店信息. 不需要不断更新位置.此外,在这种情况下,粗糙的定位就足够了. 我希望该应用程序能够自动选择GSM或WiFi或GPS,以可用者为准. 位置服务也应该是一次一次节省电话能量. 我该怎么做? 我已经分别尝试使用GPS. 我的问题是我不知道如何停止GPS的不断恢复地点功能.我也不知道如何使手机选择三种方法中的一个. 一些示例代码或想法非常感谢. 解决方案 这是某个观点: private void _getLocation() { // Get the location manager LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria cr
10 2024-02-19
编程技术问答社区
如何解决recyclerview中的重复数据项
我在Recyclerview中获得了重复的数据项,该位置数据已更新 我尝试了一些类似的方式 notifydatasetchanged()和sethasstableids(true) 但仍然没有成功 public class FragmentPetaniTerdekat extends Fragment { Context context; View view; Dialog dialog; Session session; RecyclerView recyclerView; ArrayList nama = new ArrayList(); ArrayList jenis = new ArrayList(); ArrayList jarak = new ArrayList(); ArrayList durasi = new
8 2024-02-19
编程技术问答社区
如何在Android Studio仿真器中手动设置位置
我有一个项目,我需要在该项目中获得印度的位置.但是在我的模拟器中,我没有得到位置. 我需要获得印度的位置 当我从模拟器中拿出Google地图时,它显示了当前的海中位置. API level I am using is 27. Emulator I use is Nexus 5x. 如何在此模拟器中以及手动获得当前位置. 我试图编辑模拟器中的位置,并试图给出纬度和经度,但不起作用. 解决方案 首先, 重新启动模拟器. 转到更多>位置.输入您的纬度>按发送 其他解决方案 在2020年,使用Android Studio 3.6,我必须更改模拟器位置的方式略有不同.在这里是如何: 首先, 第二,位置是第一个菜单项,默认情况下是选择.您必须在地图中选择您的位置,然后保存该点. 第三,选择保存点,然后按右下角的"选择位置"按钮. 就是这样,关闭那个窗口.你们都完成了. 有时您可能必须关闭模拟器并打开(不重新启动).
18 2024-02-19
编程技术问答社区
如何编写模拟GPS位置的Espresso测试,并在Google Testlab中使用它们?
我用浓缩咖啡录制了浓缩咖啡测试.我想测试我的应用程序中的某些位置更改. 目前我正在使用此代码嘲笑位置: LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy( Criteria.ACCURACY_FINE ); String mocLocationProvider = LocationManager.GPS_PROVIDER;//lm.getBestProvider( criteria, true ); lm.addTestProvider(mocLocationProvider, false, false, false, false, true, true, true, 0, 5); lm.setTestProvid
安卓。获取并向服务器发送GPS坐标的服务
我知道这是重复的问题,但我没有得到解释性的示例或解决方案. 我想开发一个应用程序,该应用程序在调用后台服务后,该应用程序将设备的GPS位置占据,并通过PHP Web服务将其发送到服务器.当用户需要时,他可以停止服务. 我是第一次致力于服务.我在Google上搜索并找到了许多教程,但没有得到. 所以请指导我. 解决方案 您可以使用WebService 将当前位置或LAG点发送到服务器 经常您想更新位置或LAG使用处理程序 final Handler handler = new Handler(); handler.postDelayed( new Runnable() { @Override public void run() { handler.postDelayed( this, 60 * 1000 ); } }, 60 * 1000 ); 其他解决方案 您可以获取位置跟踪代码在这里, 您需要使用计时器或悬念者运行服务. Time
4 2024-02-18
编程技术问答社区
奥利奥:如何从后台捕捉位置更新?
我将我的应用程序迁移到Oreo(现在是Google Play要求的),当我启动手机时,我现在有一个错误: 不允许开始服务意图 我的应用程序正在背景中收听任何位置更新,并定期将这些位置抓取的位置发送到服务器.为此,我这样做: in AndroidManifest.xml 在StarterViceBroadCastreceiver中我做: @Override public void onReceive(Context context, Intent int
无法获得用户位置
我试图获取用户位置网络位置或gps位置或两者兼而有之.为此,我正在运行实现LocationListener的背景服务.我还将所有需要权限添加在清单文件中.这是我的服务 public class GetLocation extends Service implements LocationListener { LocationManager lm; Location networkLocation, gpsLocation; @Override public void onCreate() { super.onCreate(); lm = (LocationManager) getSystemService(LOCATION_SERVICE); if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { lm.reques
14 2024-02-18
编程技术问答社区
连续报告用户位置的最佳做法
我正在设计一个应用程序,其中服务器端的应用程序需要不断了解用户位置.我正在考虑创建一个在后台运行并连续查询用户位置的Android服务,并将结果发送到后端服务器中的应用程序.但是,我想知道这是否是节省电池的最佳方法.例如,在iOS中,有一个叫做"重大变化"的东西可以实现此类目的,而Android也有类似的事情. 解决方案 我建议创建一个仅使用network_provider和passive_provider的背景服务.您可以使用Mintime和Indifistance参数来避免排出电池. 和reto写了一篇关于获取用户位置的精彩文章 关于您的评论,您必须启动您的服务粘性:
6 2024-02-18
编程技术问答社区
在高端手机上杀死最小的安卓前台服务
我正在尝试创建一个使用户日志路由(位置/GPS)的应用程序.为了确保即使关闭屏幕,也会记录位置,我为位置记录创建了foreground service.我将位置存储在Room Database中,该位置使用Dagger2. 将其注入我的服务 但是,这项服务被Android杀死,这当然不是很好.我可以订阅低的内存警告,但这并不能解决我在经营Android 8.0 的现代高端手机上约30分钟后杀死我服务的根本问题. 我创建了一个最小的项目,只有" Hello World"活动和服务: https "> https://github. com/anduralStuffandCode/androidForegroundService 该服务是在我的Application类中开始的,路由记录是通过Binder开始的: // Application @Override public void onCreate() { super.onCreate(); mComp
28 2024-02-18
编程技术问答社区
安卓系统中带有位置监听器的后台服务
我正在创建一个将在自己的过程中运行的背景服务.如果设备位置发生了变化,它应该可以让我收听.我应该能够更改标准,例如在通知UI之前移动的距离. 我该怎么做?我对服务有一点了解和LocationListener实现.网络周围的任何教程将不胜感激. 我得到了一个 back-link 来自堆栈溢出,但我没有't了解很多. 解决方案 我知道我要发布这个答案很晚,但是我觉得值得使用Google的保险丝位置提供商服务来获取当前位置. 此API的主要特征是: 1.简单API:让您选择精度和功耗. 2.可靠:使您的应用可立即访问最佳的,最新的位置. 3.功率效率:它选择了最有效的方法,以减少功率消耗的位置 4.抗衡性:满足广泛的需求,从需要高度准确的位置到需要定期位置更新具有可忽略的功率的位置更新. 在更新位置时,它很灵活. 如果仅在应用程序启动时需要当前位置,则可以使用getLastLocation(GoogleApiClient)方法. 如
8 2024-02-17
编程技术问答社区
如何在安卓系统中获得当前位置的经度和纬度
在我的应用程序中,我在打开应用程序时获得了当前位置的纬度和经度,但在关闭应用程序时不会. 我正在使用服务类来获取当前的位置纬度和经度. 请告诉我如何获得当前位置的纬度和经度,即使申请已关闭 解决方案 几个月前,我创建了GPSTRACKER库,以帮助我获得GPS位置.如果您需要查看GPSTRACKER> GetLocation demo androidmanifest.xml 活动 import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.
14 2024-02-17
编程技术问答社区
获取安卓应用用户在进入地理围栏时的方向
我正在与地理五人一起玩 - 我想做的是在解雇地理林时,找出他们要去哪个方向. 例如 - 让我们想在元素周围设置一个地理林.当我沿着州际公路向北行驶时,当我进入地理林(Geofence)时,我想弹出一条通知,上面写着" culvers,在右边下一个出口,向东行驶右边". 但是,如果他们在州际公路上向南行驶,它应该弹出并说:"罪魁祸首,在右边下一个出口,向东左向向东行驶". 不是最好的例子,但希望这会使这个想法跨越. 我有一些想法: 1.提出几个GPS或融合的位置请求,并使用这些请求来确定用户的前进位置. 2.使用传感器确定手机面对的方向. - 我从来没有使用过这些API,所以如果很容易获得该信息,我并不是真的很熟悉. 对这些想法的想法?更好的建议? 谢谢! 解决方案 我会使用刺痛,但我不会期望准确性. 其他解决方案 您最好使用GP,因为对于传感器,手机必须处于特定位置,即屏幕必须面对相反的驾驶方向.对于GPS,手机的位置无关紧要.
4 2024-02-17
编程技术问答社区
安卓应用程序的本地化。为多个国家提供一个字符串资源
我有一个问题:默认情况下,我有一个登录/注册活动,它使用俄语版本的strings.xml. 因此,当用户输入应用程序时 - 他会看到俄语文字.但是在该活动上,有一个按钮可以选择另一种语言. 当他单击该按钮时 - 我打开另一个活动,他可以选择要使用的语言(英语/西班牙语/德语/等).当他选择一个 语言(例如德语).从这个时间点开始,我该如何显示到现在应该从德语版本的strings.xml使用的用户文本? 而且 - 我该怎么做:如果用户的语言环境来自俄罗斯,乌克兰,佐治亚州 - - 然后使用俄语版本的strings.xml,如果用户的 来自任何其他国家/地区的语言环境 - 用户英语版本的strings.xml? 谢谢. 解决方案 我强烈建议使用 lokalise 我们有一个具有6种口味和16多种语言的应用程序.如果只有这个库,那将是一场噩梦. 他们有一个 // Create a new Locale object Locale locale = new Locale("r
能否在运行时下载本地化资源?
我具有Internet访问的应用程序,并且不想存储多种语言的许多string.xml文件. 我想要的: 应用程序仅包含一个string.xml用英语字符串. 用户启动它 - 我会看到用户的电话环境,并要求我自己的服务器提供必要的语言文件. (资源密钥将相同) 当新资源文件到来时,所有接口都应与新文件一起使用. 问题是如何更改现有或在运行时添加新的string.xml文件? 解决方案 您显然无法在运行时更改,下载或删除strings.xml 如果要存储位置,则必须使用SQLite存储存储来存储翻译. 类似: 如何在运行时修改strings.xml文件 strings.xml的运行时间修改 其他解决方案 现在我只能看到解决方案: 创建一些"本地化代理",这些代理将使我返回必要的资源(来自string.xml或下载资源) 将所有getString()和getText()替换为您自己的方法getStringFromLocalizati
10 2024-02-17
编程技术问答社区
Android Q-前台服务需要后台位置许可?
本文档中的第一个点说,如果在应用程序处于前景开始启动Android 11时,如果启动了前景位置服务,则需要背景位置权限. 我的用例是,用户点击按钮以启动位置跟踪.点击该按钮开始前景服务,该服务发出通知.现在,我希望该应用程序即使在背景后仍可以继续跟踪. 在Android 10之前,不需要背景位置许可才能完成此操作. 我的问题是要支持Android 11,我是否还需要开始请求背景许可?另外,我需要为Android 10做同样的事情吗?在互联网上找不到任何其他参考来验证这一点.请让我知道您的想法. 解决方案 根据背景工作的定义 只要满足以下每个条件: 当前,该应用程序的活动目前都不可见. 该应用程序在用户可见的应用程序中没有运行任何启动的前景服务. 否则,该应用被认为是在前景中运行的. 在您的情况下,当用户可见活动时,您可以进入第二点开始前景服务,以便从技术上讲您的应用程序仍在前景中,即使显示了服务通知远离您的应用程序. 如果您针对Andr
8 2024-02-17
编程技术问答社区
是否有可能获得一个应用程序在后台试图访问位置时的日志?
Google一直告诉我我的应用程序正在访问后台的位置.我是针对SDK 29的目标,但我没有ACCESS_BACKGROUND_LOCATION许可.我确实有ACCESS_FINE_LOCATION. 我开始认为也许广告网络正在后台这样做,但是我想通过查看日志来确认这一点.有办法做到吗? 编辑:下面关于AppOps的答案非常有用,但是我提交了一个更新的修复程序,每个问题都以这种方式找到,并且我仍然遇到问题,因为play商店拒绝了由于背景位置而拒绝更新.那么还有其他方法可以解决这个问题吗?也许在较旧版本的Android上使用某些东西? 解决方案 如果您可以访问Android 11设备,则有 in 本书),我有一些代码可以从所有dangerous plactermission录制堆栈跟踪: getSystemService(AppOpsManager::class.java) ?.setOnOpNotedCallback(executor, obj
10 2024-02-17
编程技术问答社区
shouldShowRequestPermissionRationale和requestPermissions之间有什么区别?
我正在构建一个需要用户位置的应用程序.我正在遵循在这里说: > shouldShowRequestPermissionRationale返回布尔值,指示我们是否应该向ui向UI显示以要求许可(危险许可,access_fine_location) 现在在此代码中(取自文档本身): if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ
6 2024-02-17
编程技术问答社区