小编gre*_*til的帖子

从热点设备的角度如何避免自动弹出热点登录?

我控制着作为热点的 IOT 设备的 http 服务器。此设备 http 服务器提供一些设置,但不提供 Internet 连接。

当我从 Ubuntu PC 连接到此设备时,Ubuntu 会弹出一个“热点登录”窗口。当您在机场同意条款并访问互联网时,这“很有用”。以下是在 Google 上找到的此类窗口的示例:

在此输入图像描述

此功能由 Gnome NetworkManager 控制。我知道如何禁用它,但这不是我问题的重点。

在此输入图像描述

我的问题是如何处理设备 http 服务器上的情况,基本上告诉任何网络守护进程(Linux、Windows 或 Mac):“没有互联网连接,不要尝试,不要用登录页面打扰您的用户,这没有道理……”?

是否有官方的 rfc 规范来处理热点自动登录页面?

authentication networking hotspot

11
推荐指数
0
解决办法
8892
查看次数

Android Marshmallow:如果没有互联网访问,如何避免 Wi-Fi 掉线

我有一台运行 MarshMallow 6.0 的 Nexus 5x,它与无法访问互联网的设备的 Wi-Fi 相关联。Android 不断断开连接,甚至在几次尝试后都不会自动重新连接,因为它检测到没有 Internet 访问。

即使没有 Internet 访问,我如何强制 Android 保持与此 Wi-Fi 的连接?

该设备未扎根,但我可以在实际选择此 Wi-Fi 点的应用程序中以编程方式更改“事物”。

编辑 #1

在我的应用程序中,我目前正在使用 enableNetwork API。该文件指出:

如果应用程序的目标 SDK 版本为 LOLLIPOP 或更新版本,即使连接了 Wi-Fi,网络通信也可能无法使用 Wi-Fi;流量可能会通过另一个网络发送,例如蜂窝数据、蓝牙网络共享或以太网。例如,如果另一个提供 Internet 访问(例如蜂窝数据)的网络可用,流量将永远不会使用不提供 Internet 访问(例如无线打印机)的 Wi-Fi 网络。需要确保其网络流量使用 Wi-Fi 的应用程序应使用诸如 bindSocket(java.net.Socket)、openConnection(java.net.URL) 或 bindProcessToNetwork(Network) 之类的 API 来执行此操作。

在这种特殊情况下,潜在的其他网络(蜂窝数据)关闭,因为设备被迫处于平面模式。

android android-wifi android-6.0-marshmallow

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

ffmpeg rtsp 解码缓冲区太小

我正在使用 ffmpeg 在 Android 上解码 rtsp,当图像快速更新或以高分辨率更新时,我很快就会看到像素化:

工作解码帧

非工作解码帧

谷歌搜索后,我发现它可能与 UDP 缓冲区大小相关。然后我在 ffmpeg/libavformat/udp.c 中使用以下参数重新编译了 ffmpeg 库

#define UDP_TX_BUF_SIZE 327680
#define UDP_MAX_PKT_SIZE 655360
Run Code Online (Sandbox Code Playgroud)

它似乎有所改善,但在某些时候仍然开始失败。知道我应该增加哪个缓冲区以及如何增加吗?

streaming android ffmpeg rtsp

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

Simple replacement of init to just start console

On a very simple PC, I want to replace Ubuntu 12.04 /sbin/init by the most simple bash script in order to have the very minimum number of running processes. Obviously, no X, no USB, no detection of new hardware, no upgrade, no apt, "nothing", I just need a working console with a DHCP-based Wi-Fi IP address (ssid, passphrase are already stored in /etc/network/interfaces). That's all. Currently, I have tried this in replacement of /sbin/init:

#!/bin/sh
mount -o rw,remount /
mount …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu init

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

使用ARM NEON将8位图像调整为2

我有一个8位640x480图像,我想缩小到320x240图像:

void reducebytwo(uint8_t *dst, uint8_t *src)
//src is 640x480, dst is 320x240
Run Code Online (Sandbox Code Playgroud)

使用ARM SIMD NEON最好的方法是什么?在某处有任何示例代码?

作为一个起点,我只想做相当于:

for (int h = 0; h < 240; h++)
    for (int w = 0; w < 320; w++)
        dst[h * 320 + w] = (src[640 * h * 2 + w * 2] + src[640 * h * 2 + w * 2 + 1] + src[640 * h * 2 + 640 + w * 2] + src[640 * h * 2 + …
Run Code Online (Sandbox Code Playgroud)

arm image image-processing simd neon

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

OpenCV 项目点的逆向

我有一个面向棋盘的相机。我知道点的世界 3d 位置以及相机图像上相应投影点的 2d 位置。所有世界点都属于同一平面。我使用solvePnP:

Matx33d camMat;
Matx41d distCoeffs;
Matx31d rvec;
Matx31d tvec;
std::vector<Point3f> objPoints;
std::vector<Point2f> imgPoints;
solvePnP(objPoints, imgPoints, camMat, distCoeffs, rvec, tvec);
Run Code Online (Sandbox Code Playgroud)

然后我可以使用 projectPoints 从 3d 世界点到 2d 图像点:

std::vector<Point2f> projPoints;
projectPoints(objPoints, rvec, tvec, camMat, distCoeffs, projPoints);
Run Code Online (Sandbox Code Playgroud)

projPoints 非常接近 imgPoints。

如何使用与属于同一平面的 3d 世界点相对应的屏幕点进行相反的操作。我知道从单一的角度来看,不可能重建 3d 位置,但在这里我在同一平面上,所以这确实是一个 2d 问题。我可以计算反向旋转矩阵以及反向平移向量,但是我该如何进行呢?

Matx33d rot;
Rodrigues(rvec, rot);
Matx33d camera_rotation_vector;
Rodrigues(rot.t(), camera_rotation_vector);
Matx31d camera_translation_vector = -rot.t() * tvec;
Run Code Online (Sandbox Code Playgroud)

opencv pose-estimation

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

Android tmpfs可由用户写入

在已 root 的 Android 6.0.1 设备上,我希望用户可以写入 tmpfs。我愿意:

mkdir /sdcard/test
su
mount -t tmpfs -o size=512m tmpfs /sdcard/test
#Note that the permissions of /sdcard/test have changed
chmod 0771 /sdcard/test
chown root:sdcard_rw /sdcard/test
exit
touch /sdcard/test/aa
Run Code Online (Sandbox Code Playgroud)

安装报告:

tmpfs /storage/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0
Run Code Online (Sandbox Code Playgroud)

但我得到:

touch: '/sdcard/test/aa': Permission denied
Run Code Online (Sandbox Code Playgroud)

所以我无法以标准用户身份写入 /sdcard/test (通过 shell 或应用程序)。我究竟做错了什么?我也尝试在 /data/ 中创建安装,这是同样的问题。

编辑1:

我已经在 Android 4.4 设备上尝试过并且可以正常工作。因此,某些内容发生了变化,并且在更高版本中受到了限制。我想知道 5.x 是否也受到影响。

编辑2:

奇怪的是, mount 报告了两次挂载点:

tmpfs /mnt/runtime/default/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0
tmpfs /storage/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0
Run Code Online (Sandbox Code Playgroud)

编辑3:

当我以用户身份执行文件触摸时,内核报告以下内容:

[54484.588865] type=1400 …
Run Code Online (Sandbox Code Playgroud)

android android-shell

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

libvlc和sout选项

我想在libvlc中使用sout选项,就像在相应的命令行中一样:

vlc rtsp://address --sout '#duplicate{dst=display,dst=standard{access=file,mux=ts,dst=/tmp/go.mpg}}'
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它没有被考虑在内.我被告知在libvlc中尚未实现sout.知道如何找到解决方案吗?我基本上只是试图在文件中转储在屏幕上播放的rtsp流.这里没有任何转码 - 只是转储.如果不可能,有没有一个好地方我可以修补libvlc并简单地将流转储到文件中?

vlc libvlc

4
推荐指数
1
解决办法
3367
查看次数

ARM上的LSB到MSB位反转

我需要用LSB中的每个字节而不是MSB来反转YUV图像.我已经在C中读取了用于位反转的最佳算法(从MSB-> LSB到LSB-> MSB)但是我想做一些经过ARM优化的东西.

int8 *image;
for(i = 0; i < size; i++) {
    image[i] = reversebit8(image[i]); //Use the lookup mechanism
}
Run Code Online (Sandbox Code Playgroud)

当我控制图像格式(双字节YUYV或任何排列)时,我可以反转16位:

int16 *image;
for(i = 0; i < size / 2; i++) {
    image[i] = reversebit16(image[i]);
}
Run Code Online (Sandbox Code Playgroud)

图像从YUYV LSB到UYVY MSB.甚至是32位:

int32 *image;
for(i = 0; i < size / 4; i++) {
    image[i] = reversebit32(image[i]);
}
Run Code Online (Sandbox Code Playgroud)

图像从YUYV LSB变为VYUY MSB.

问题:如何以优化的方式为ARM执行此操作?霓虹灯也很好.

我认为这些说明http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.kui0100a/armasm_cihjgdid.htm可能很有用.

arm bit-manipulation neon

4
推荐指数
2
解决办法
5647
查看次数

Android:ADT无法识别Nougat logcat的格式

我有一个"老"的ADT:

Eclipse IDE for Android Developers  23.0.2.1259578  adtproduct
Run Code Online (Sandbox Code Playgroud)

连接到牛轧糖像素C.

ADT无法正确读取logcat的格式,如此屏幕截图所示:

在此输入图像描述

升级到Nougat之前没有问题,也就是Marshmallow.有什么可做的(除了放弃ADT ......)?

android adt logcat android-logcat android-7.0-nougat

4
推荐指数
1
解决办法
1634
查看次数

霓虹灯和手臂组件优化

我正在霓虹灯和手臂组件中实现计算机视觉卷积算法,其中每个像素被九个自身像素和相邻像素的和积替代.主循环看起来像这样:

.loop:
    vld1.u8 {d0}, [line_prev]
    add line_prev, line_prev, #1
    vld1.u8 {d1}, [line_prev]
    add line_prev, line_prev, #1
    vld1.u8 {d2}, [line_prev]
    add line_prev, line_prev, #6

    vld1.u8 {d3}, [line]
    add line, line, #1
    vld1.u8 {d4}, [line]
    add line, line, #1
    vld1.u8 {d5}, [line]
    add line, line, #6

    vld1.u8 {d6}, [line_next]
    add line_next, line_next, #1
    vld1.u8 {d7}, [line_next]
    add line_next, line_next, #1
    vld1.u8 {d8}, [line_next]
    add line_next, line_next, #6

//Everything is loaded now. Let's multiply and sum

    vmull.u8 q10, d0, d10       //d10 …
Run Code Online (Sandbox Code Playgroud)

assembly arm neon

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

汇编/霓虹灯代码崩溃

我正在使用以下代码:

#include <stdlib.h>
#include <fcntl.h>

int main(int argc, char **argv) {
    char *auyvy = malloc(640 * 480 * 2);
    char *ay8 = malloc(640 * 480);

    int fd = open("input.uyvy", O_RDONLY);
    if (fd >= 0) {
        read(fd, auyvy, 640 * 480 * 2);
        close(fd);
    }

    __uyvy_luma_extract(640, 480, auyvy, 640 * 2, ay8, 640);

    fd = open("output.y8", O_RDWR | O_CREAT);
    if (fd >= 0) {
        write(fd, ay8, 640 * 480);
        close(fd);
    }
}
Run Code Online (Sandbox Code Playgroud)

另外两个文件:https : //github.com/emrainey/DVP/blob/master/libraries/public/yuv/__uyvy_luma_extract.S https://github.com/emrainey/DVP/blob/master/libraries/public /yuv/yuv.inc

我用"gcc -g convert.c …

assembly neon

0
推荐指数
1
解决办法
204
查看次数