- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是拥有一个在后台运行的服务,并以指定的时间间隔(例如每 10 分钟)将我的设备位置发送到远程服务器。我正在尝试使用 Little Fluffy Location Library 来优化电池生命周期,同时获取设备的位置。我还无法成功获取位置。我不确定我做错了什么。
我关注了this service tutorial还有这个LFLL example 。每次我运行此命令时,MyService.java 中的 Toast 都会显示“尚未找到位置”。此外,据我了解,LFLL 将循环并通过 BroadcastReceiver 获取新位置(我对此有错吗?)。但是,它永远不会再次尝试获取位置,也永远不会进入 MyBroadcastReceiver.java。
MainActivity.java
package com.testtracker;
import android.app.Activity;
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity
{
Button startButton;
Button stopButton;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startButton = (Button)findViewById(R.id.button2);
stopButton = (Button)findViewById(R.id.button);
startButton.setEnabled(true);
stopButton.setEnabled(false);
LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
boolean locationEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!locationEnabled)
{
Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(intent);
}
}
public void startService(View view)
{
startButton.setEnabled(false);
stopButton.setEnabled(true);
Intent intent = new Intent(getBaseContext(), MyService.class);
startService(intent);
}
public void stopService(View view)
{
startButton.setEnabled(true);
stopButton.setEnabled(false);
Intent intent = new Intent(getBaseContext(), MyService.class);
stopService(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
MyService.java
package com.testtracker;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;
import android.util.Log;
import android.widget.Toast;
import com.littlefluffytoys.littlefluffylocationlibrary.LocationInfo;
import com.littlefluffytoys.littlefluffylocationlibrary.LocationLibraryConstants;
public class MyService extends Service
{
protected PowerManager.WakeLock wakeLock;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startID)
{
Log.d("LOGGER", "in start");
PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
refreshDisplay();
return START_STICKY;
}
private void refreshDisplay()
{
Log.d("LOGGER", "MyService refreshDisplay()");
refreshDisplay(new LocationInfo(this));
}
private void refreshDisplay(final LocationInfo locationInfo)
{
if(locationInfo.anyLocationDataReceived())
{
Toast.makeText(this, "lat: " + Float.toString(locationInfo.lastLat) + " lng: " + Float.toString(locationInfo.lastLong) + " acc: " + Integer.toString(locationInfo.lastAccuracy) + " prov: " + locationInfo.lastProvider, Toast.LENGTH_SHORT).show();
if(locationInfo.hasLatestDataBeenBroadcast())
{
Toast.makeText(this, "Location has been broadcast", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "Locaiton broadcast pending", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(this, "No location found yet", Toast.LENGTH_SHORT).show();
}
}
private final BroadcastReceiver lftBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
final LocationInfo locationInfo = (LocationInfo)intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO);
refreshDisplay(locationInfo);
}
};
@Override
public void onDestroy()
{
super.onDestroy();
wakeLock.release();
Log.d("LOGGER", "MyService onDestroy");
}
}
MyApplication.java
package com.testtracker;
import android.app.Application;
import android.util.Log;
import android.widget.Toast;
import com.littlefluffytoys.littlefluffylocationlibrary.LocationLibrary;
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
Log.d("LOGGER", "application oncreate");
Toast.makeText(this, "in application", Toast.LENGTH_SHORT).show();
LocationLibrary.showDebugOutput(true);
try
{
LocationLibrary.initialiseLibrary(getBaseContext(), 60 * 1000, 2 * 60 * 1000, "com.testtracker");
}
catch(UnsupportedOperationException e)
{
Log.d("LOGGER", "UnsupportedOperationException thrown - the device doesn't have any location providers");
}
}
}
MyBroadcastReceiver.java
package com.testtracker;
import com.littlefluffytoys.littlefluffylocationlibrary.LocationInfo;
import com.littlefluffytoys.littlefluffylocationlibrary.LocationLibraryConstants;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class MyBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "IN broadcaster!", Toast.LENGTH_SHORT).show();
Log.d("LOGGER", "BroadcastReceiver - onReceive: received location updated");
final LocationInfo locationInfo = (LocationInfo) intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO);
Intent contentIntent = new Intent(context, MainActivity.class);
PendingIntent contentPendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
}
最佳答案
我不知道您是否已经发现了这个问题。我觉得问题出在你的 list 文件中。
<service android:name="com.littlefluffytoys.littlefluffylocationlibrary.LocationBroadcastService" />
<receiver android:name="com.littlefluffytoys.littlefluffylocationlibrary.PassiveLocationChangedReceiver" android:exported="true" />
那么你的接收器应该有这个,
<receiver android:name="com.testtracker.MyBroadcastReceiver">
<intent-filter>
<action android:name="com.testtracker.littlefluffylocationlibrary.LOCATION_CHANGED" />
</intent-filter>
</receiver>
此外,在接收器中您将获取 LocationInfo 对象,我认为更好的方法是从接收器启动您的服务,并将 LocationInfo 作为附加内容传递给 Intent 。
Intent service = new Intent(context, MyService.class);
service.putExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO, locationInfo);
然后从 LocationInfo 中获取您的服务的纬度和经度。
final LocationInfo locationInfo = (LocationInfo) intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO);
if (locationInfo != null) {
float lat = locationInfo.lastLat;
float lng = locationInfo.lastLong;
}
希望使用这个库的人可以从中获得帮助。
关于java - Little Fluffy 位置库找不到位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974800/
this post完美地描述了我的原始问题:我想遵循TDD: 写一个小测试 观看失败 写足够的代码使它成功 观看成功 重复 我正在IntelliJ中从事Grails项目。如果我只想编写普通的JUnit
据我所知,little-oh 应该有一个接近无穷大的 n 的极限(函数/little-oh,omega 函数)= 0,对于 little omega,极限应该等于无穷大。但是,是否有可能存在多个 li
您好,我目前正在使用 Little Man Computer对于一个学校项目,我知道 LMC 有一个 ADD 和一个 SUB 功能。但是我知道 LMC 中没有乘法或除法函数,我想知道为什么会这样。 最
little-oh 和 little Omega 符号的用途/目的是什么? 尽管我完全理解符号本身及其代表的含义。我还没有看到任何一本书或算法在任何计算中使用它们,所以我不禁想知道如果不使用它们,为什
我正在阅读“小计划者”,以更好地理解编程的某些核心元素(即递归),并获得更多关于如何像程序员一样思考的想法。 这本书被推荐作为入门级书籍,并且在引言中指出,我所需要知道的只是英文,数字和计数(我会这样
考虑以下 s 表达式: ((lambda (car) (car (quote (a b c)))) cdr) 在我尝试过的大多数方案实现中,计算结果为 (b c)因为cdr传递给 lambda,将其命
我的目标是拥有一个在后台运行的服务,并以指定的时间间隔(例如每 10 分钟)将我的设备位置发送到远程服务器。我正在尝试使用 Little Fluffy Location Library 来优化电池生命
我刚刚学习了 Python (3.x),但我一直在将十六进制字符串转换为 float 。我有这个十六进制字符串值:'0x22354942F31AFA42CE6A494311518A43082CAF43
所以,我可以理解为 0x1234 的一个字,当存储为 little-endian 时,在内存中变为 0x3412。我还看到字节 0x12 作为位域 a:4,b:4 将存储为 0x21。但是,如果我有更
我有一个 C 程序,它通过套接字在 UDP 数据包中从大型机接收数据。 C 程序的主机正在从 Unix(大端)更改为 Linux(小端),程序不再运行。我目前没有更改大型机客户端程序的选项。 程序执行
我正在使用 PulseAudio API“实时”获取当前麦克风输入。缓冲区数据作为 16 位小端字节数组传送。我想做的是找出缓冲区中的最大峰值电平并将其转换为分贝值。为此,我必须将每两个字节数组值转换
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
这个问题在这里已经有了答案: Difference between Big-O and Little-O Notation (5 个答案) 关闭 8 年前。 直观上,nb = o(an)(o 是小哦
我正在使用 file.readAsBytes()。但它只提供List来接收数据。我正在尝试 Uint8List 但没有用。 最佳答案 readAsBytes将为您提供字节列表。它可能是一个 Uint8
我想快速了解 F# 并且想知道“The Little ML'er”这本书是否会有所帮助,因为 F# 基于 OCaml,它是 ML 的衍生物。或者,ML 与 F# 的差别太大而没有任何帮助吗? 谢谢。
将小端系统中的数据转换为网络字节顺序所需的底层转换是什么?对于2字节和4字节数据,有众所周知的函数(如htons,ntohl等)来封装变化,1字节数据的字符串(如果有的话)会发生什么? 此外,维基百科
我很难理解 The Little Schemer 的 evens-only*&co 发生了什么事情第 145 页的示例。 这是代码: (define evens-only*&co (lambda (
在从SICP学习了一些Scheme之后,我开始阅读The Little Schemer(我觉得很有趣),并且完成了大约四分之一。我注意到,无需使用lambda即可编写许多(大多数?全部?)解决方案,而
我正在尝试了解计算机的实际工作原理,我找到了一些模拟器软件,但它们似乎非常复杂(我还是个初学者)。我看到了Little Man Computer (LMC)这是很旧的。恐怕软件的工作方式与现在完全不同
我正在尝试了解计算机的实际工作原理,我找到了一些模拟器软件,但它们似乎非常复杂(我还是个初学者)。我看到了Little Man Computer (LMC)这是很旧的。恐怕软件的工作方式与现在完全不同
我是一名优秀的程序员,十分优秀!