小编Adi*_*ikh的帖子

在背景中获取准确的中间位置点,并计算Android中起始位置和结束位置的距离

关于这个主题可能有类似的问题,但我需要你对一些具体要求的想法和建议.

这是我的需要 - 我们正在开发一个跟踪用户旅行的应用程序.该应用程序将开始在后台收集该用户的位置,当用户从App.Background Service"开始"他的旅程时,将根据用户在特定持续时间内的移动来获取位置.当用户"从应用程序停止"他的行程时,我们正在计算用户在所有记录位置的帮助下行进的距离(使用Google距离计算API).该应用程序在理想情况下工作正常.但主要的挑战是 - 在某些情况下,我们无法获取用户的准确和精确位置.影响的场景是 - 没有互联网,2g/3g的数据计划,GPS没有返回准确数据的某些特定区域等.

lat-long数据不正确会导致跳闸距离和路线不正确.这是App的主要问题.

请问,任何人都可以建议最好的选择/建议吗?PS - 我们尝试过GPS,网络,FusedLocationProvider.

编辑2 -

我们已经在准确性和距离的基础上实现了逻辑.更接近点.而且刚刚从谷歌那里找到了一个有用的api来纠正一些与实际道路分散注意力的位置点.在此发布以供其他人参考......

来自Google的Snap to Roads Api

android android-location android-fusedlocation android-gps

8
推荐指数
1
解决办法
552
查看次数

使用Python libtorrent创建守护进程以获取100k +种子的元数据

我试图使用python libtorrent每天获取大约10k +种子的元数据.

这是当前的代码流

  1. 启动libtorrent会话.
  2. 获取我们需要在过去1天内上传的元数据的总数.
  3. 从块中获取来自DB的洪流哈希值
  4. 使用这些哈希创建磁链接,并通过为每个磁体URI创建句柄,在会话中添加这些磁体URI.
  5. 在获取元数据的同时休眠一秒,并继续检查是否找到元数据.
  6. 如果收到元数据,请将其添加到DB中,否则检查我们是否一直在寻找大约10分钟的元数据,如果是,则删除句柄,即不再查找元数据.
  7. 无限期地完成上述工作.并保存会话状态以备将来使用.

到目前为止我试过这个.

#!/usr/bin/env python
# this file will run as client or daemon and fetch torrent meta data i.e. torrent files from magnet uri

import libtorrent as lt # libtorrent library
import tempfile # for settings parameters while fetching metadata as temp dir
import sys #getting arguiments from shell or exit script
from time import sleep #sleep
import shutil # removing directory tree from temp directory 
import os.path # for …
Run Code Online (Sandbox Code Playgroud)

python bittorrent magnet-uri libtorrent libtorrent-rasterbar

7
推荐指数
1
解决办法
1080
查看次数

Java设计问题,其中行为附加到注释

假设我使用注释JPA来使用@transactions.

因此,为了让任何方法在一个事务下运行,我添加了一个@transaction注释,BINGO我的方法在一个事务下运行.

为了实现上述目标,我们需要interface为类提供一个,并且实例由一些容器管理.
此外,我应该始终从接口引用调用该方法,以便代理对象可以启动事务.所以我的代码看起来像:

class Bar {
   @Inject
   private FooI foo;
   ...
   void doWork() {
      foo.methodThatRunUnderTx();
   }
}
class FooImpl implements FooI {
   @Override
   @Transaction
   public void methodThatRunUnderTx() {
       // code run with jpa context and transaction open
   }
}
interface FooI {
    void methodThatRunUnderTx();
}
Run Code Online (Sandbox Code Playgroud)

好,好

现在让我们说methodThatRunUnderTx两个逻辑操作

[1]调用一些服务(长请求/响应周期,比如5秒)并获取结果

[2]执行一些jpa实体修改

既然这个方法调用很长,我们不想长时间保持事务处理,所以我们更改代码,以便[2]在单独的tx中发生并且 methodThatRunUnderTx不会在事务中运行

因此,我们将删除@TransactionmethodThatRunUnderTx和在类中添加另一种方法@transaction让我们说新的方法是methodThatRunUnderTx2,现在调用此方法从methodThatRunUnderTx我们必须把它注入本身并添加一个方法,接口,这样的呼叫通过代理对象发生.

所以现在我们的代码看起来像:

class Bar {
   @Inject
   private …
Run Code Online (Sandbox Code Playgroud)

java annotations dependency-injection transactions jpa-2.0

6
推荐指数
1
解决办法
332
查看次数

我怎么知道键盘是开放的

我怎么才能知道键盘是否打开.实际上我的问题是,如果键盘打开,那么我只是要求隐藏,而不是总是调用hide.有什么方法可以检查键盘是否打开?目前我正在使用这种方法来隐藏键盘.

EditText myEditText = (EditText) findViewById(R.id.myEditText);
View view = this.getCurrentFocus();
if (view != null) {ditText) findViewById(R.id.myEditText);
View view = this.getCurrentFocus();
if (view != null) { Inp` 
im.hideSoftInputFromWindow(view.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
1
解决办法
423
查看次数

如何让android中的后续时间戳精确到5微秒

以下是我使用的示例代码:

 private final SensorManager mSensorManager;
 private final Sensor mAccelerometer;
 private long prevTime=0;

 public SensorActivity() {
   mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
   mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
   mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
 }
Run Code Online (Sandbox Code Playgroud)

需要后续系统时间戳值的差OnSensorChanged(SensorEvent函数事件)的传感器开始之后.

 public void onSensorChanged(SensorEvent event) {
    long systemTimeStamp= SystemClock.elapsedRealtimeNanos();
    long timeDifference = (systemTimeStamp - prevTime) / 1000000;    //msec        
    Log.e("PROBLEM",timeDifference);
    prevTime=systemTimeStamp;
 }
Run Code Online (Sandbox Code Playgroud)

上面的差异在SENSOR_DELAY_FASTEST上多次变为0 //为什么?

后续时间戳的差异报告为0,但根据定义,它应以纳秒为单位报告时间,因此在5微秒时差异不应为零.如何获得非零差异,或者是否有其他方法可以以5微秒的精度获得系统时间戳差异.

请注意,event.timestamp报告传感器的时间戳,但我需要OnSensorChanged(SensorEvent事件)中的系统时间戳,以通过与实际系统时间戳进行比较来测量传感器时间戳的准确度.

android timestamp delay android-sensors sensormanager

6
推荐指数
1
解决办法
184
查看次数

TextView Android上的边框(如阴影)结实而大

我正在使用那个"黑客".我在stackoverflow中已经阅读过了.

@Override
public void draw(Canvas canvas) {
    for (int i = 0; i < 20; i++) {
        super.draw(canvas);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的边框仍然是冰沙,我想在我的所有TextView上放置一个大而实心的边框(我已经有了我的组件扩展了textview).

我有一个文本颜色的选择器,当我在这个文本中单击文本颜色需要更改.(它已经工作,但我尝试使用画布应用另一种替代方案,在这个替代方案中,我失去了这个组合).

在此输入图像描述

android border textview

6
推荐指数
1
解决办法
893
查看次数

强化经常误用身份验证的修复程序

当我使用fortify进行扫描时,在以下代码中发现了诸如“经常被滥用:身份验证”之类的漏洞。为此,我们有任何解决方法可以避免此问题。我看过相关文章,但无法获得解决方案。使用ESAPI,我为主机名和ipadress提供了正则表达式,但它不起作用。 addr.getHostAddress() java.net.InetAddress.getByName(nameServiceHost); java.net.InetAddress.getLocalHost().getCanonicalHostName() localhost.getHostName()

请建议我解决此问题。

java fortify fortify-source

6
推荐指数
1
解决办法
7634
查看次数

澄清选择的作用

我一直无法在谷歌上找到任何东西.

我有这段代码:

Random r = new Random();
int[] output = Enumerable.Range(0, 11).Select(x => x / 2).OrderBy(x => r.Next()).ToArray();
Run Code Online (Sandbox Code Playgroud)

而我实际上无法理解每个元素的作用.

它生成一系列0到11之间的数字和元素.但是select(x => x/2)是做什么的?它只是制作成对的元素,

我知道整个东西吐出来的东西,一个带有数字对的数组,一个没有对的数字.

但完全理解它有点高于我吗?

(这可以在这里问吗?或者我应该再次删除这个问题?)

c# arrays

6
推荐指数
3
解决办法
160
查看次数

我无法以编程方式创建密码编辑文本?

setInputType()当我在android中以编程方式创建Password EditText时,它setTransformationMethod()不起作用......

我的代码:

EditText edtPassword = new EditText(getApplicationContext());
edtPassword.setLayoutParams(rowParams);
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

这不起作用...

android

5
推荐指数
1
解决办法
1375
查看次数

Kotlin - 我如何从另一个文件访问我的新类扩展函数

我对Kotlin很新.

我希望能够为我的抽象类添加一个函数,所以当我定义该函数时,我将能够在该类的每个子函数上调用它(它们继承抽象类)

但是,我想在其他文件中定义这些扩展函数.当我尝试在抽象类的特定子实现上调用它们时,我无法访问这些函数.

我需要制定哪些规则来解决我的问题?

我希望能够实现这样的目标:

abstract class Parent(val val1, val val2, val val3){}

class Child(var val1, var val2, var val3) : Parent(val1, val2, val3){}

class Child2(var val1, var val2, var val3) : Parent(val1, val2, val3){}
Run Code Online (Sandbox Code Playgroud)

父级和所有子级的扩展方法:

 fun Parent.convertToChild2( ): Child2? {

return //some creation method of Child2
} 
Run Code Online (Sandbox Code Playgroud)

我希望能够调用它:

child: Child
child.convertToChild2
Run Code Online (Sandbox Code Playgroud)

我在单独的文件中定义了所有类,并在其他文件中定义了扩展函数.

我无法访问这样的功能 - 不可见.

kotlin extension-function

5
推荐指数
1
解决办法
5698
查看次数