2011-06-27 44 views
2

我正在倾听连接和解除星系的电源。电源连接和断开的听众

我创造了2个BroadCastReceivers,一个用于连接,另一个用于断开连接。

当我尝试实施时,即使断开电源线,我也只能获得连接的数据。

意图被发送,但看起来是错误的。

这里是活动的代码:

 //  Handle Power On 
    PowerConnectedBCReceiver myPowerConnectedBCReceiver = new PowerConnectedBCReceiver(); 
    IntentFilter intentPowerOnFilter = new IntentFilter(); 
    intentPowerOnFilter.addAction("android.intent.action.ACTION_POWER_CONNECTED"); 
    registerReceiver(myPowerConnectedBCReceiver, intentPowerOnFilter); 

    BroadcastReceiver PowerConnectedReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      showToast("connected"); 
     } 
    }; 



    //  Handle Power Off 
    PowerConnectedBCReceiver myPowerDisonnectedBCReceiver = new PowerConnectedBCReceiver(); 
    IntentFilter intentPowerDisconnectedOnFilter = new IntentFilter(); 
    intentPowerDisconnectedOnFilter.addAction("android.intent.action.ACTION_POWER_DISCONNECTED"); 
    registerReceiver(myPowerDisonnectedBCReceiver, intentPowerDisconnectedOnFilter); 

    BroadcastReceiver PowerDisconnectedReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      showToast("disconnected"); 
     } 
    }; 

注册两个BC做工作

 registerReceiver(PowerDisconnectedReceiver, new IntentFilter("com.neglected.POWER_DISCONNECTED")); 
    registerReceiver(PowerConnectedReceiver, new IntentFilter("com.neglected.POWER_CONNECTED")); 

广播连接代码:

public class PowerConnectedBCReceiver extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Toast.makeText(context, "Phone was connected to power" , Toast.LENGTH_LONG).show(); 
    Intent tIntent = new Intent("com.neglected.POWER_CONNECTED"); 
    context.sendBroadcast(tIntent); 
} 

}

广播断开Ç颂:

public class PowerDisconnectedBCReceiver extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 

    Toast.makeText(context, "Phone was disconnected from power" , Toast.LENGTH_LONG).show(); 
    Intent tIntent = new Intent("com.neglected.POWER_DISCONNECTED"); 
    context.sendBroadcast(tIntent); 
} 

}

是代码错了吗? 我可以听两个动作吗? seperately? 我看不到额外与CONNNECTED Action一起发送,是吗?

回答

1

我的广播实例化出错。我错误地使用了PowerConnectedBCReceiver代替PowerDisconnectedBCReceiver

问题解决了。

1

不知道你最后两个班(* BCReeivers)应该做什么。你的第一块代码看起来不错。如果重要,它将被限制在封闭活动的生命周期中。

对于Galaxy S,您可能无法依靠这些意图。特别是,我发现Verizon Fascinate(它们的Galaxy S版本)非常麻烦。看到这里:http://devblog.bu.mp/how-to-ddos-yourself

+0

谢谢,现在,我要他们做的就是Toast调试。谢谢。这个想法是我在我的Activity中有一个复选框,当更改状态时,它应该在我的服务中注册/注销广播监听器。 *在我将它推到我的服务之前,我希望看到它在活动中有效。 – Saariko

+0

感谢链接michal。我读过它,而我的“不良”行为就是在连接和断开电话时收到CONNECTED事件。我会继续寻找。再次感谢 – Saariko