WebcamService.java :  » Chat-Messenger » androidwebcam » edu » colstate » cs » webcam » Android Open Source

Android Open Source » Chat Messenger » androidwebcam 
androidwebcam » edu » colstate » cs » webcam » WebcamService.java
package edu.colstate.cs.webcam;

import java.util.ArrayList;

import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smackx.packet.Jingle;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

public class WebcamService extends Service implements WebcamServiceListener {


  public class WebcamServiceBinder extends Binder {
      WebcamService getService() {
            return WebcamService.this;
        }
    }  
  
  private WebcamServiceImpl mServiceImpl = null;
  
  private final IBinder mBinder = new WebcamServiceBinder();
  
  @Override
  public IBinder onBind(Intent intent) 
  {
    return mBinder;
  }

  @Override
  public void onCreate( ) 
  {
    super.onCreate();
    mServiceImpl = new WebcamServiceImpl(this);
  }
  
  @Override
  public void onStart(Intent intent, int startId) 
  {
    super.onStart(intent,startId);
  }

  @Override
  public void onDestroy( ) 
  {
    if (mServiceImpl.connection != null)
    {
      mServiceImpl.logout();
      mServiceImpl = null;
    }
    
    super.onDestroy();
  }
  
  
  // method to login
    public boolean login(String userName, String password, String serverHost)
    {
      return mServiceImpl.login(userName, password, serverHost);
    }

  // method to get friends (and their status)
    ArrayList<Friend> getFriendList()
    {
      return mServiceImpl.getFriendList();
    }
    
    // method to send text message to friend
    void sendTextMessage(Friend friend, String messageText)
    {
       mServiceImpl.sendTextMessage(friend, messageText);
     }
    
    // method to logout
    boolean logout()
    {
      return mServiceImpl.logout();
    }

    // Notification methods
    public void notifyFriendListChanged()
    {
      Log.i("edu.colstate.cs.webcam.WebcamService", "Friend List changed");
      
        // send intent
        Intent intent = new Intent("edu.colstate.cs.webcam.FRIEND_LIST_CHANGED");
        sendBroadcast(intent);
      
    }
        
    public void notifyMessageReceived(Message msg)
    {
      String fromUser = msg.getFrom();
      String message = msg.getBody();

      Log.i("edu.colstate.cs.webcam.WebcamService", "Msg from = " + fromUser + ",Contents=" + message);
   
        Intent intent = new Intent("edu.colstate.cs.webcam.MESSAGE_RECEIVED");
        
        intent.putExtra("edu.colstate.cs.webcam.fromuser", fromUser);
        intent.putExtra("edu.colstate.cs.webcam.message", message);
        sendBroadcast(intent);
    }
    
  
  // Audio call methods
  public void callFriend(Friend friend)
  {
    mServiceImpl.callFriend(friend);
  }
  
  private Friend getFriendFromJingle(Jingle jingle)
  {
    ArrayList<Friend> friendList = mServiceImpl.getFriendList();
    
    Friend friend = friendList.get(0);
      for (Friend aFriend : friendList)
      {
           if (aFriend.getUser().equals(jingle.getFrom()))
           {
             friend = aFriend;
           }
      }
      
      return friend;
  }
  
  public void receiveCallRequest(Jingle jingle)
  {
    // ::TODO:: send notification  (for now automatically accept the call, for test purposes)
    ArrayList<Friend> friendList = mServiceImpl.getFriendList();
    
    Friend friend = friendList.get(0);
      for (Friend aFriend : friendList)
      {
           if (aFriend.getUser().equals(jingle.getFrom()))
           {
             friend = aFriend;
           }
      }
                 
    // ::TODO:: remove test code
    acceptCall(friend);
  }
  
  public void acceptCall(Friend friend)
  {
    mServiceImpl.acceptCall(friend);
  }
  
  public void callEstablished(Jingle jingle)
  {
        Intent intent = new Intent("edu.colstate.webcam.CALL_ESTABLISHED");
        
        Friend friend = getFriendFromJingle(jingle);
        // ::TODO:: check if we can pass in friend object (implement parcelable interface)  
        intent.putExtra("callfrom", friend.getUser());
  
        sendBroadcast(intent);
  }
  
  public void rejectCall(Friend friend)
  {
    mServiceImpl.rejectCall(friend);
  }
  
  public void sendAudioData(byte audioData[], int bufLen)
  {
    mServiceImpl.sendAudioData(audioData, bufLen);
  }

  public void receiveAudioData(byte audioData[], int bufLen)
  {
    String strData = new String(audioData, bufLen);
    System.out.println(strData);

    // send notification that audio data was received
      Intent intent = new Intent("edu.colstate.webcam.AUDIO_DATA_RECEIVED");
          
      intent.putExtra("audiodata", audioData);
      intent.putExtra("audiodatalen", bufLen);
    
      sendBroadcast(intent);
    
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.