2012-11-02 18 views
0

在我的聊天應用程序中,我希望當人不在聊天屏幕上時,他應該收到通知,並且當該人不在聊天屏幕上時,他不應該收到任何通知(聊天應該簡單地顯示在聊天屏幕本身上)。知道用戶本身的存在

當人在聊天屏幕上時,我強制更改用戶的狀態並進行廣播。現在問題是,當用戶現在將收到任何消息/聊天時,用戶設備上運行的服務將如何決定移動用戶本身的存在(即他是否在聊天屏幕上)。我認爲這是不可能得到用戶本身的存在(與名冊的幫助,因爲用戶本身並不在他的名冊)

這個函數是寫在我的服務類

PacketFilter filter = new MessageTypeFilter(Message.Type.chat); 
     final PacketCollector collector = connection.createPacketCollector(filter); 
     connection.addPacketListener(new PacketListener() { 

      @Override 
      public void processPacket(Packet packet) { 
       // TODO Auto-generated method stub 
       //notification(packet.getFrom()); 
       packet = collector.nextResult(); 
       Message message = (Message)packet; 
       senderName = packet.getFrom(); 

       int alphaPOS = senderName.indexOf("@"); 
       String subSenderName = senderName.substring(0,alphaPOS); 



       notificationforChat(subSenderName+": "+message.getBody(),packet.getFrom().toString()); 

      } 
     }, filter); 

現在當用戶在聊天屏幕本身時如何停止通知?

請幫幫我

回答

1

在你的活動中寫下這個方法。

 public static boolean isVisible = false; 
     @Override 
     public void onWindowFocusChanged(boolean hasFocus) { 
      // TODO Auto-generated method stub 
      super.onWindowFocusChanged(hasFocus); 
      if(hasFocus) 
      { 
        isVisible = true; 
      } 
      else 
      { 
        isVisible = false; 
      } 
     } 

無論您希望使用此布爾值來檢查屏幕是否可見。

1

您的聊天屏幕是嵌入到android活動中嗎?如果是這樣,您可以重寫您的Activity的onResume()和onPause()方法來設置某種標誌,以便您的服務現在可以在活動處於活動狀態時(用戶使用時)或者不可見。一種方法是使用共享首選項。下面是一個簡化外形:

@Override 
public void onResume() { 
    setUserPresence(true); 
    super.onResume(); 
} 

@Override 
public void onPause() { 
    setUserPresence(false); 
    super.onResume() 
} 

public void setUserPresence(boolean state) { 
    SharedPreferences prefs = getSharedPreferences("settings_file_name",MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putBoolean("UserPresent", state); 
    editor.commit(); //Save your settings to the shared preferences file 
} 

然後所有你需要做的就是檢查這個標誌在你的服務,使用相同的SharedPreferences方法。

相關問題