我的应用程序上有一个显示网络类型(2G或3G或4G)的指示器,但在获取网络类型后,我如何知道应该在哪个速度类别?
我知道如何检测网络类型:
private TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
CurrentNetworkType = telephonyManager.getNetworkType();
Run Code Online (Sandbox Code Playgroud)
鉴于可能的返回值:
// public static final int NETWORK_TYPE_1xRTT
// Since: API Level 4
// Current network is 1xRTT
// Constant Value: 7 (0x00000007)
//
// public static final int NETWORK_TYPE_CDMA
// Since: API Level 4
// Current network is CDMA: Either IS95A or IS95B
// Constant Value: 4 (0x00000004)
//
// public static final int NETWORK_TYPE_EDGE
// Since: API Level 1
// Current network is EDGE
// Constant Value: …Run Code Online (Sandbox Code Playgroud) 我的活动运行部分唤醒锁定,因为它会持续处理收到的蓝牙数据.唤醒锁的设置如下:
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)
当某些事件发生时,我想在显示屏上显示,以便用户可以查看状态.我希望显示器自动打开,而不是通过用户按键打开.然而,所有这样做的尝试都失败了.当使用部分唤醒锁定运行时显示屏关闭时,我尝试将显示屏返回并让用户看到当前活动失败.我试过伪造用户活动:
PowerManager NewPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
NewPowerManager.userActivity(1, false);
Run Code Online (Sandbox Code Playgroud)
设置窗口的标志:
Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)
甚至释放唤醒锁并启动另一个应该打开屏幕:
if (wakeLock != null)
{
wakeLock.release(); // release the wakelock
}
PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock");
// tried | PowerManager.ON_AFTER_RELEASE to no avail
TempWakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的吗?我不打算开放一个新活动,而只是向用户显示我当前的活动.有没有其他人能够做到这一点?感谢你给与我的帮助.