更新
我注意到我实际上正在接收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) 读入一个仅包含数字列表的文件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) 是否可以使用单个图像的不同“部分”同时渲染两个视频流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(这忽略了这样一个事实,即它们可能会相互重叠,因为我没有在任何地方设置位置)。
基本上,我要实现的目标是可能的吗?