老规矩,不废话,直奔主题 ^_^

 程序1

 结构如图:

Common_operation代码:

package Aidl_application_communication.Jason;

 interface COMMON_OPERATION {

	int Add(int x,int y);
}

myService代码:

package Aidl_application_communication.Jason;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import Aidl_application_communication.Jason.COMMON_OPERATION.Stub;

public class myService extends Service {
  
	private COMMON_OPERATION.Stub cos=new Stub() {
		
		public int Add(int x, int y) throws RemoteException {
			// TODO Auto-generated method stub
			//return 0;
			return x+y;
		}
	};
	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		//return null;
		return cos;
	}

}

Aidl_application_communication_1Activity代码:

package Aidl_application_communication.Jason;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Aidl_application_communication_1Activity extends Activity {

	private Button start_btn;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		start_btn = (Button) this.findViewById(R.id.start_btn);
		start_btn.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent it = new Intent(
						Aidl_application_communication_1Activity.this,
						myService.class);				startService(it);

				Toast.makeText(Aidl_application_communication_1Activity.this,
						"启动", Toast.LENGTH_LONG).show();

			}
		});

	}
}

程序2

结构如图:

Aidl_application_communication_2代码:

package Aidl_application_communication_2.Jason;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import Aidl_application_communication.Jason.COMMON_OPERATION;


public class Aidl_application_communication_2Activity extends Activity {

	private EditText x_txt;
	private EditText y_txt;
	private EditText z_txt;
	private Button jisuan_btn;
	private Button bind_btn;
	private Button unbind_btn;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		findAll();
		bind();
	}

	public void findAll() {
		x_txt = (EditText) this.findViewById(R.id.x_txt);
		y_txt = (EditText) this.findViewById(R.id.y_txt);
		z_txt = (EditText) this.findViewById(R.id.z_txt);
		jisuan_btn = (Button) this.findViewById(R.id.jisuan_btn);
		bind_btn = (Button) this.findViewById(R.id.bind_btn);
		unbind_btn = (Button) this.findViewById(R.id.unbind_btn);
	}

	public void bind() {
		jisuan_btn.setOnClickListener(mylistener);
		bind_btn.setOnClickListener(mylistener);
		unbind_btn.setOnClickListener(mylistener);
	}

	private View.OnClickListener mylistener = new OnClickListener() {

		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.jisuan_btn:
				try {
				 int z=	co.Add(Integer.valueOf(x_txt.getText().toString()), Integer.valueOf(y_txt.getText().toString()));
				 z_txt.setText(String.valueOf(z));
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				break;
			case R.id.bind_btn:
				Intent it=new Intent(COMMON_OPERATION.class.getName());
				bindService(it, sc, BIND_AUTO_CREATE);
				break;
			case R.id.unbind_btn:
				unbindService(sc);
				break;
			default:
				break;
			}
		}
	};
	private COMMON_OPERATION co = null;

	private ServiceConnection sc = new ServiceConnection() {

		public void onServiceDisconnected(ComponentName name) {
			// TODO Auto-generated method stub
			co = null;
			Toast.makeText(Aidl_application_communication_2Activity.this,
					"已经断开", Toast.LENGTH_LONG).show();
		}

		public void onServiceConnected(ComponentName name, IBinder service) {
			// TODO Auto-generated method stub
             co= COMMON_OPERATION.Stub.asInterface(service);
             Toast.makeText(Aidl_application_communication_2Activity.this,
 					"连接成功", Toast.LENGTH_LONG).show();
		}
	};

}
posted on 2011-09-08 16:52  Jwc  阅读(1244)  评论(5编辑  收藏  举报