- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个作为前台服务在后台运行的应用程序。此服务实例化 PhoneStateListener 的子类。 PhoneStateListener 使用前台服务的上下文对象创建 TelephonyService,然后监听单元格位置变化。这在显示打开时非常有效。但是一旦显示关闭,单元格的记录就不再起作用。
public class gps_service extends Service
{
public static TelephonyManager p_TelephonyManager = null;
public static myPhoneStateListener p_myPhoneStateListener = null;
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
p_myPhoneStateListener = new myPhoneStateListener();
p_TelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
p_TelephonyManager.listen(p_myPhoneStateListener, PhoneStateListener.LISTEN_CELL_LOCATION);
...
public class myPhoneStateListener extends PhoneStateListener
{
public static int CurrentCellID;
/*
public static int current_cell_id;
@Override
public void onCellLocationChanged(CellLocation p_CellLocation)
{
//write to log
}
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
当手机屏幕打开时,一切正常,但是当打开 onCellLocationChanged 事件的屏幕时,永远不会调用。我也试试GsmCellLocation currentCellLocation = (GsmCellLocation) p_TelephonyManager .getCellLocation();通过此代码始终返回屏幕外之前的最后一个单元格 ID,而不是实际的单元格 ID。
我也在我的服务中尝试了 partial_wake_lock,但结果相同:
private PowerManager pPowerManager = null;
private PowerManager.WakeLock pWakeLock = null;
..
@Override
public void onCreate()
{
super.onCreate();
pPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
pWakeLock = pPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "No sleep");
pWakeLock.acquire();
...
}
@Override
public void onDestroy()
{
if (pWakeLock != null)
{
pWakeLock.release();
pWakeLock = null;
}
...
}
知道我做错了什么吗?在 HTC Desire Z Android 2.2 上测试
最佳答案
这种情况是屏幕关闭,手机进入休眠模式。查看PowerManager .
定义了以下标志,对系统功率有不同的影响。这些标志是互斥的 - 您只能指定其中一个。
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright
*如果您持有部分唤醒锁,CPU 将继续运行,而不管任何计时器,甚至在用户按下电源按钮后也是如此。在所有其他唤醒锁中,CPU 将运行,但用户仍然可以使用电源按钮让设备进入休眠状态。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
..screen will stay on during this section..
wl.release();
关于Android PhoneStateListener : onCellLocationChanged in standby mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726521/
我的应用程序处理传入/传出调用并显示一些 UI。所以我使用 PhoneStateListener 来监听 CALL_STATE_IDLE、CALL_STATE_RINGING、CALL_STATE_O
当设备进入打盹模式或省电模式时,我的 PhoneStateListener 停止工作。我还需要在设备重启时注册 PhoneStateListener。我不想使用 BroadcastReceiver,因
我使用 PhoneStateListener 来查明电话何时处于 Activity 通话中以及通话何时结束并记录它是在来电还是去电中。当我安装监听器时,它在第一次调用时按预期工作。之后,尽管它仍然有效
我实现了一个 PhoneStateListener 如何在您被调用时停止音频并在您完成后再次启动它。当我通过 finish() 退出我的应用程序时,PhoneStateListener 似乎仍然处于
我正在尝试构建一个应用程序,在我接听和拒绝来电时进行记录。因此,我正在使用 PhoneStateListener。 当我在 onCreate() 方法中启动监听器时,它会在一段时间后停止 Activi
我正在尝试设置 PhoneStateListener 但我得到一个 PhoneCallListener cannot be resolved to a type。 public class Butto
我正在尝试使用 Broadcast Receiver 测试 PhoneStateListener。但我无法这样做。接收类中的日志语句也没有在 Logcat 中打印。 这是 list 文件
这是我的全部代码...... 广播示例.java package com.example.broadcast; > import android.app.Activity; import > and
我想在 android 应用程序中检测拨出电话。实际上我可以检测到拨出电话,但它也适用于来电,我不希望这样。我需要它只为传出工作。这是我的代码.... boolean ringing = false;
我目前正在开发一个 android 应用程序来监视来自电话的传入和传出调用并将调用信息注册到文件中,从我读过的内容来看 PhoneStateListener 似乎做了什么我需要。 问题是我需要应用程序
我正在使用 PhoneStateListener,因此当用户接到电话或开始通话时,扬声器将立即打开。 PhoneStateListener phoneStateListener = new P
我写了一个应用程序,它通过 PhoneStateListener 监控我的信号强度。我希望此应用在启动时启动并永远运行。 我的管理方法如下,但我想知道是否有人可以推荐更好的方法。 我已经注册了一个在
我在 android 上遇到问题。我想知道设备是否已连接到 GSM 网络,以便它可以发送短信。 两种方式我都试过了,结果都是一样的。在 Moto G 4G 上,我能够确定它是否可以访问。在 Redmi
我创建了一个 BroadcastReceiver 来监听他的电话状态并采取相应的行动。 这里的问题是它似乎没有从我的数据库中获取正确的值,并且从一开始处于空闲状态的 toast 显示两次,第二次调用后
我的应用程序运行多次后出现内存问题。 java.lang.OutOfMemoryError: 位图大小超出 VM 预算 我想我不知何故泄漏了内存,所以我做了一个 DUMP HPROF 文件并使用 MA
我需要从几个类中调用方法,但我不知道如何获得正确的上下文 持有类: public class SharedData { ...... ...... public static void sto
在某些情况下,我不想听手机的状态。如何销毁 PhoneStateListener 类的对象? 我这样创建对象 try { phoneCallListener = new WnetPlaye
在 Android(目标 25)中,我有一个后台服务,在 onCreate 函数中我已经初始化了一个电话状态监听器。它在 Nougat 之前的 Android 版本上运行良好,但在 Nougat 中它
我正在编写包含两个元素的简单应用程序 - 服务和 Activity 。 Activity 仅用于启动和停止服务。服务使用 PhoneStateListener 获取有关当前 CellID、LAC 和
我刚刚接触 Android 开发,并决定我在这个新领域的第一个征服将是掌握手机对来电的 react 。 后来我用谷歌搜索了一下 http://www.compiletimeerror.com/2013
我是一名优秀的程序员,十分优秀!