import org.apache.http.HttpVersion;
import org.apache.http.params.CoreProtocolPNames;
import android.app.Activity;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.http.AndroidHttpClient;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
import android.util.Log;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
+import android.widget.TextView;
+import android.widget.Toast;
public class NextActivity extends Activity {
private static final String TAG = "NextActivity";
}
webServiceConnection = new MobieAdHttpClient(this.myCookie, url, httpClient, this, syncObject);
this.exec.execute(webServiceConnection);
+
+
+
+
+
+
+
+
+ mCallbackText = new TextView(this);
+ this.doBindService();
+ }
+
+
+
+
+
+
+
+
+
+
+ /** Messenger for communicating with service. */
+ Messenger mService = null;
+ /** Flag indicating whether we have called bind on the service. */
+ boolean mIsBound;
+ /** Some text view we are using to show state information. */
+ TextView mCallbackText;
+
+
+ /**
+ * Target we publish for clients to send messages to IncomingHandler.
+ */
+ final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+
+ /**
+ * Handler of incoming messages from service.
+ */
+ class IncomingHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case TestService.MSG_SET_VALUE:
+ mCallbackText.setText("Received from service: " + msg.arg1);
+ break;
+ default:
+ super.handleMessage(msg);
+ }
+ }
+ }
+
+
+
+ /**
+ * Class for interacting with the main interface of the service.
+ */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className,
+ IBinder service) {
+ // This is called when the connection with the service has been
+ // established, giving us the service object we can use to
+ // interact with the service. We are communicating with our
+ // service through an IDL interface, so get a client-side
+ // representation of that from the raw service object.
+ mService = new Messenger(service);
+ mCallbackText.setText("Attached.");
+
+ // We want to monitor the service for as long as we are
+ // connected to it.
+ try {
+ Message msg = Message.obtain(null,
+ TestService.MSG_REGISTER_CLIENT);
+ msg.replyTo = mMessenger;
+ mService.send(msg);
+
+ // Give it some value as an example.
+ msg = Message.obtain(null,
+ TestService.MSG_SET_VALUE, this.hashCode(), 0);
+ mService.send(msg);
+ } catch (RemoteException e) {
+ // In this case the service has crashed before we could even
+ // do anything with it; we can count on soon being
+ // disconnected (and then reconnected if it can be restarted)
+ // so there is no need to do anything here.
+ }
+
+ // As part of the sample, tell the user what happened.
+ Toast.makeText(NextActivity.this, R.string.remote_service_started,
+ Toast.LENGTH_SHORT).show();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ // This is called when the connection with the service has been
+ // unexpectedly disconnected -- that is, its process crashed.
+ mService = null;
+ mCallbackText.setText("Disconnected.");
+
+ // As part of the sample, tell the user what happened.
+ Toast.makeText(NextActivity.this, R.string.remote_service_stopped,
+ Toast.LENGTH_SHORT).show();
+ }
+ };
+
+ void doBindService() {
+ // Establish a connection with the service. We use an explicit
+ // class name because there is no reason to be able to let other
+ // applications replace our component.
+ bindService(new Intent(NextActivity.this,
+ TestService.class), mConnection, Context.BIND_AUTO_CREATE);
+ mIsBound = true;
+ mCallbackText.setText("Binding.");
}
+
}
import android.os.Messenger;
import android.os.RemoteException;
import android.widget.Toast;
+import android.app.Notification;
public class TestService extends Service {
*/
@Override
public IBinder onBind(Intent intent) {
+ try {
+ synchronized (this) {
+ this.wait(10000);
+ }
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
return mMessenger.getBinder();
}
CharSequence text = getText(R.string.remote_service_started);
// Set the icon, scrolling text and timestamp
- Notification notification = new Notification(R.drawable.stat_sample, text,
+ Notification notification = new Notification(R.drawable.alert_dialog_icon, text,
System.currentTimeMillis());
// The PendingIntent to launch our activity if the user selects this notification
- PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
- new Intent(this, Controller.class), 0);
+ //PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
+ // new Intent(this, Controller.class), 0);
// Set the info for the views that show in the notification panel.
- notification.setLatestEventInfo(this, getText(R.string.remote_service_label),
- text, contentIntent);
+ //notification.setLatestEventInfo(this, getText(R.string.remote_service_label),
+ // text, contentIntent);
// Send the notification.
// We use a string id because it is a unique number. We use it later to cancel.