package org.societies.android.platform.socialdata; import org.societies.android.api.internal.sns.AConnectorBean; import org.societies.android.api.internal.sns.ISocialData; import org.societies.android.platform.socialdata.SocialData.LocalBinder; import org.societies.api.internal.sns.ISocialConnector.SocialNetwork; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.AsyncTask; import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; import android.util.Log; import android.widget.TextView; public class TestContainerSocialDataActivity extends Activity { private static final String LOG_TAG = TestContainerSocialDataActivity.class.getName(); private static final String PACKAGE_NAME = "org.societies.android.platform.socialdata"; private ISocialData socialData; private boolean socialDataConnected = false; private TextView text; private TestTask testTask; private String addedConnectorId = null; private AConnectorBean[] connectors = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.text); testTask = new TestTask(this); //REGISTER BROADCAST IntentFilter intentFilter = new IntentFilter() ; intentFilter.addAction(ISocialData.ADD_SOCIAL_CONNECTOR); intentFilter.addAction(ISocialData.REMOVE_SOCIAL_CONNECTOR); intentFilter.addAction(ISocialData.GET_SOCIAL_CONNECTORS); intentFilter.addAction(ISocialData.ACTION_XMPP_ERROR); this.getApplicationContext().registerReceiver(new bReceiver(), intentFilter); //CREATE INTENT FOR SERVICE AND BIND Intent intentSocialData = new Intent(this.getApplicationContext(), SocialData.class); this.getApplicationContext().bindService(intentSocialData, socialDataConnection, Context.BIND_AUTO_CREATE); Log.d(LOG_TAG, "Test in progress..."); text.setText("Test in progress..."); } /** * IServiceDiscovery service connection */ private ServiceConnection socialDataConnection = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { Log.d(LOG_TAG, "Connecting to service"); try { //GET LOCAL BINDER LocalBinder binder = (LocalBinder) service; //OBTAIN SERVICE API socialData = (ISocialData) binder.getService(); socialDataConnected = true; testTask.execute(); } catch (Exception ex) { Log.d(LOG_TAG, "Error binding to service: " + ex.getMessage()); } } public void onServiceDisconnected(ComponentName name) { Log.d(LOG_TAG, "Disconnecting from service"); socialDataConnected = false; } }; private class TestTask extends AsyncTask<Void, Void, Void> { private Context context; public TestTask(Context context) { this.context = context; } protected Void doInBackground(Void... args) { try { addConnector(); while(addedConnectorId == null) Thread.sleep(1000); getConnectors(); while(connectors == null) Thread.sleep(1000); removeConnector(addedConnectorId); } catch (InterruptedException e) { e.printStackTrace(); } return null; } }; private void addConnector() { long testValidity = 1000; socialData.addSocialConnector(PACKAGE_NAME, SocialNetwork.Facebook, "testToken", testValidity); } private void getConnectors() { socialData.getSocialConnectors(PACKAGE_NAME); } private void removeConnector(String id) { socialData.removeSocialConnector(PACKAGE_NAME, id); } private class bReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d(LOG_TAG, intent.getAction()); if (intent.getAction().equals(ISocialData.ADD_SOCIAL_CONNECTOR)) { String id = intent.getStringExtra(ISocialData.INTENT_RETURN_KEY); addedConnectorId = id; Log.d(LOG_TAG, "id="+id); text.setText("id="+id); } else if(intent.getAction().equals(ISocialData.GET_SOCIAL_CONNECTORS)) { connectors = castArray(intent.getParcelableArrayExtra(ISocialData.INTENT_RETURN_KEY)); for(int i=0; i<connectors.length; i++) { Log.d(LOG_TAG, "connector.getID()="+connectors[i].getId()); text.append("\nconnector.getID()="+connectors[i].getId()); } } else if(intent.getAction().equals(ISocialData.REMOVE_SOCIAL_CONNECTOR)) { Log.d(LOG_TAG, "connector removed"); text.append("\nconnector removed"); } else if(intent.getAction().equals(ISocialData.ACTION_XMPP_ERROR)) { String stanzaError = intent.getStringExtra(ISocialData.EXTRA_STANZA_ERROR); String logMsg = "XMPPError: "+stanzaError; Log.d(LOG_TAG, logMsg); text.append("\n"+logMsg); } } }; private AConnectorBean[] castArray(Parcelable[] parcelables) { AConnectorBean[] rv = new AConnectorBean[parcelables.length]; for(int i=0; i<parcelables.length; i++) rv[i] = (AConnectorBean)parcelables[i]; return rv; } }