小编CL2*_*L22的帖子

传递`Context`到处都是混乱的 - 创建类来处理与上下文的不同交互?

有很多问题需要处理Context,使用哪些上下文以及如何存储它等等.但每次我将它传递给一个对象,或者创建一个提供访问权限的静态或单例时,我都会觉得很脏.我不确定我得到了什么味道,但它肯定闻起来.

我认为另一种方法是创建充当上下文代理的类,而不是传递给上下文,它将上下文的特性的子集定义为一种接口(不是语言interface关键字).

替代方案的示例(为了便于阅读,省略了代码):

// in activity.onCreate():

    StateStorer ss = new StateStorer (getApplicationContext());
    RememberMe obj = new RememberMe(ss);
    ss.restore();

// in activity.onDestroy()

    ss.save();

// the "proxy"
class StateStorer {
    List<StateStorerListener> listeners;
    Context mContext;
    public StateStorer(Context context){
        mContext = context;
    }
    public SharedPreferences getSharedPreferences(String tag){
        return mContext.getSharedPreferences(tag, 0);
    }
    public save(){
        // tell listeners to save
    }
    public restore(){
        // tell listeners to restore
    }
}

// an example class that needs to save state

class RememberMe { …
Run Code Online (Sandbox Code Playgroud)

java android android-context

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

SensorManager.registerListener(..,Handler处理程序),请举例?

我不明白如何使用这种方法,

sensorManager.registerListener(SensorEventListener侦听器,传感器传感器,int速率,处理程序处理程序);

(这里的文件)

1)如果它使用SensorEventListener,那么Handler的目的是什么?

2)请举例说明我可以传递给它的处理程序?

谢谢!

android handler

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

了解linux标准USB网络摄像头驱动程序

我正在尝试了解与USB网络摄像头连接的软件层.

据我了解:

标准网络摄像头适用于"USB视频设备类"或"UVC"类别.

在Linux中,Video4Linux(V4L,V4L2)封装了所有视频捕获设备.V4L(2)提供了两个API:一个用于希望获取和使用捕获设备数据的程序.另一个API是内部的,对于驱动程序本身,因此程序可以通过V4L(2)的外部API访问这些驱动程序.

其中一个V4L(2)驱动程序是UVC驱动程序,它包含所有符合标准的USB网络摄像头.

我的问题:

查看UVC驱动程序的主页,它会显示支持的设备列表.这些设备中的每一个都是在UVC驱动程序中单独提供的吗?或者只有当设备具有需要处理的特性时?换句话说,是否所有符合标准的USB网络摄像头都能自动使用UVC驱动程序,无论它们是否在该列表中?

谢谢

linux usb webcam driver

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

Arduino Nano计时器

我想了解更多有关Arduino Nano计时器的信息.

  1. 那里有什么计时器?
  2. 他们会产生中断吗?
  3. 什么代码会为它们附加中断处理程序?
  4. 如何delay()delayMicroseconds()实施...
    • 他们使用定时器中断吗?(如果是这样,我怎么能在此期间执行其他代码?)
    • 或者他们反复轮询直到计时器达到某个值?
    • 或者他们增加值X次?
    • 或者他们以另一种方式做到了吗?

avr atmega timer arduino atmel

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

PHP ZipArchive没有添加任何文件(Windows)

我没有把一个文件放到一个新的zip存档中.

makeZipTest.php:

<?php

$destination = __DIR__.'/makeZipTest.zip';
$fileToZip = __DIR__.'/hello.txt';

$zip = new ZipArchive();
if (true !== $zip->open($destination, ZIPARCHIVE::OVERWRITE)) {
    die("Problem opening zip $destination");
}
if (!$zip->addFile($fileToZip)) {
    die("Could not add file $fileToZip");
}
echo "numfiles: " . $zip->numFiles . "\n";
echo "status: " . $zip->status . "\n";
$zip->close();
Run Code Online (Sandbox Code Playgroud)

zip已创建,但为空.然而,没有触发任何错误.

出了什么问题?

php windows ziparchive

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

使用node-ipc和unix套接字在NodeJS和C之间进行通信

我想通过Unix套接字使用node-ipc在NodeJS和C程序之间进行通信,根据该主页,这是最快的选择.(他们将在同一台机器上).该软件包声称它可以与C程序通信.(我必须进行健全检查).

问题是示例不提供示例C代码,我接下来不知道如何让他们说话.

有人能指出我的C代码示例来匹配那些客户端/服务器示例吗?例如,我如何调整本教程在C中使用unix管道(假设我不完全偏离轨道?!也许它是我想要的" 域套接字 "?)这对我来说没有任何意义,我我错过了至关重要的事情.

c sockets ipc node.js node-ipc

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

setTestProviderLocation()不会触发onLocationChanged()的调用

我正在尝试使用这段代码:

在Android中测试GPS

问题是,当我运行测试时,永远不会调用onLocationChanged():

public class LocationTest0 extends AndroidTestCase implements LocationListener {
private Location received = null;
public void testExample() {
    LocationManager lm = (LocationManager)this.getContext().getSystemService(Context.LOCATION_SERVICE);
    String testProvider = "Test";

    if (null == lm.getProvider(testProvider)){
        lm.addTestProvider(testProvider, false, false, false, false, false, false, false, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);
    }

    lm.setTestProviderEnabled(testProvider, true);
    lm.requestLocationUpdates(testProvider, 0, 0, this);
    lm.setTestProviderStatus(testProvider, LocationProvider.AVAILABLE, null, System.currentTimeMillis());

    Location location = new Location(testProvider);
    location.setLatitude(1.0);
    location.setLongitude(2.0);
    location.setTime(System.currentTimeMillis());
    lm.setTestProviderLocation(testProvider, location);

    Assert.assertFalse("Received Location is null", received == null );

    lm.removeTestProvider(testProvider);
}
@Override
public void onLocationChanged(Location location) {
    received …
Run Code Online (Sandbox Code Playgroud)

junit android locationmanager

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

Arduino Nano:是否支持 SPI?

可以使用 Arduino Nano 上的 SPI 硬件吗?

Nano 页面上,它说:

SPI:10 (SS)、11 (MOSI)、12 (MISO)、13 (SCK)。这些引脚支持 SPI 通信,虽然由底层硬件提供,但目前不包含在 Arduino 语言中。

然而,有一个SPI 库

请问有人能解释一下这个矛盾吗?我想,要么

  • nano 页面已过期
  • Nano SPI 硬件不支持 SPI 库,但在其他板上受支持
  • SPI 库仅在软件中为 Nano 实现

是哪个?

谢谢

arduino spi

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

Monolog:如何捕获所有错误和异常

我错过了一些非常明显的东西.

如何使monolog记录所有php错误,php用户错误和异常?

在使用monolog之前,我编写了自己的函数set_error_handler(),register_shutdown_function()并将其传递给了set_exception_handler().有没有办法使用Monolog的API,或者我必须执行以下操作?

  1. 编写一个错误处理程序和异常处理程序,我将其传递给上面的PHP函数
  2. 在这些处理程序中,调用适当的Monolog函数,例如Logger::addError(...)使用switch语句或类似函数

肯定有一个Monolog API可以在一次通话中完成上述操作吗?

php monolog

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

如何让 PHPUnit 解释弃用和警告?

我刚刚学习如何使用 PHPUnit。我从命令行运行它,在我得到的结果中OK, but there are issues! Tests: 5, Assertions: 15, Warnings: 2, Deprecations: 5.

我不知道如何让它解释导致弃用和警告计数的原因。我如何找出测试代码中导致此问题的原因?我尝试添加标志--display-deprecations,但它没有改变任何东西。

我正在使用 flags --testdox--stderr-v它们没有帮助。我已经尝试过--debug--verbose但它说它们都不受支持的标志。

我如何知道我的代码中存在什么问题?趁着这个机会,我不妨问问大家。这是我的测试代码:

final class FetchForErrorsTest extends TestCase
{
    /**
     * @dataProvider urlsForBasicTest
     */
    public function testNoErrors($url)
    {
        $rr = new RequestResponse(TestConf::$rootUrl.'/'.$url);
        $body = $rr->get();
        $this->assertStringEndsWith('</html>', rtrim($body));
        $this->assertEquals($rr->status, 200);
    }
    public static function urlsForBasicTest()
    {
        return [
            ['index.php'],
            ...
        ];
    }
}
Run Code Online (Sandbox Code Playgroud)

我还收到以下内容的弃用和警告警报,但没有任何进一步的解释:

final class DIContainerTest extends TestCase
{
    public …
Run Code Online (Sandbox Code Playgroud)

phpunit deprecated deprecation-warning

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