小编Hyp*_*ino的帖子

Android DeviceAdminReceiver:从未收到过 onNetworkLogsAvailable 意图

更新

我注意到我实际上正在接收NETWORK_LOGS_AVAILABLE意图!问题是,收到它需要长时间(一个多小时?)。

有没有已知的方法可以增加接收这些事件的频率?

原始问题

我正在尝试处理现在可以onNetworkLogsAvailable在 DeviceAdminReceiver 应用程序中接收意图后读取的 DNS 事件。此功能从 Android 8.0 开始可用。

出于某种原因,即使我成功调用了该setNetworkLoggingEnabled方法,我也从未收到此意图。启用管理员后,我会收到该ACTION_DEVICE_ADMIN_ENABLED事件,但之后就没有其他内容了。

这是我启用网络日志记录的地方:

public class NetworkAdminReceiver extends DeviceAdminReceiver {
    @Override
    public void onEnabled(Context context, Intent intent) {
        DevicePolicyManager manager =
            (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        if ( manager == null )
        {
            throw new IllegalStateException("Unable to get DevicePolicyManager");
        }
        if (manager.isDeviceOwnerApp(context.getPackageName())) {
            manager.setNetworkLoggingEnabled(getWho(context), true);
        }
        else
        {
            Toast.makeText(context, "This application is not device owner. DNS logging only works" +
                " when this …
Run Code Online (Sandbox Code Playgroud)

android device-admin

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

while read 循环忽略文件中的最后一行

读入一个仅包含数字列表的文件members_08_14.csv,while 循环正在读取每一行。对于每一行,数字都会与正则表达式进行匹配,以确保它只是数字且长度恰好为 11 个字符。

while read card
do
    if [[ $card =~ ^[0-9]{11}$ ]]
    then
        echo "some sql statement with $card" >> temp.sql;
    else
        echo "Invalid card number in file: $card";
    fi
done <registered/members_08_14.csv
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果正则表达式不匹配,则 else 不会被执行。我希望要么将该行写入temp.sql,要么打印一行以stdout表明卡号无效。

然而,该行为更像是仅针对整个文件激活true条件或仅激活条件。false为什么会这样呢?

这是registered/members_08_14.csv的内容:

47678009583
47678009585
47678009587
47678009590
476780095905
Run Code Online (Sandbox Code Playgroud)

第一行有效,第五行无效。

输出cat -vte registered/members_08_14.csv

47678009583$
47678009585$
47678009587$
47678009590$
476780095905$
Run Code Online (Sandbox Code Playgroud)

bash

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

是否可以在单个SurfaceView上同时渲染两个视频流?

是否可以使用单个图像的不同“部分”同时渲染两个视频流SurfaceView

我已经制作了示例代码,该示例代码使用两个SurfaceView并排同时渲染两个视频,但是我想知道是否可以使两个视频在同一屏幕上播放SurfaceView

使用MediaPlayer,您可以将SurfaceHolder或Surface本身设置为显示。我相信实现我所要求的代码将在surfaceCreated方法内部:

@Override
public void surfaceCreated(SurfaceHolder holder)
{
    mediaPlayerTop.setDisplay(holder);
    mediaPlayerBottom.setDisplay(holder);

    play();
}
Run Code Online (Sandbox Code Playgroud)

但是,仅将两个MediaPlayers 设置为相同的Surface会导致在IllegalStateException尝试prepare第二个s 时出现MediaPlayer(这忽略了这样一个事实,即它们可能会相互重叠,因为我没有在任何地方设置位置)。

基本上,我要实现的目标是可能的吗?

android surfaceview

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

标签 统计

android ×2

bash ×1

device-admin ×1

surfaceview ×1