答えて
助けてください。あなたはこのように、MotionEventの基本データを抽出することができます。
// AIDLデータ
public class Data implements Parcelable {
private long downTime;
private long eventTime;
private int action;
private float x;
private float y;
private float pressure;
private float size;
private int metaState;
private float xPrecision;
private float yPrecision;
private int deviceId;
private int edgeFlags;
private Data(Parcel source){
readFromParcel(source);
}
public Data(){
}
public static Data.Creator<Data> CREATOR= new Creator<Data>() {
@Override
public Data createFromParcel(Parcel source) {
return new Data(source);
}
@Override
public Data[] newArray(int size) {
return new Data[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(downTime);
dest.writeLong(eventTime);
dest.writeInt(action);
dest.writeFloat(x);
dest.writeFloat(y);
dest.writeFloat(pressure);
dest.writeFloat(size);
dest.writeInt(metaState);
dest.writeFloat(xPrecision);
dest.writeFloat(yPrecision);
dest.writeInt(deviceId);
dest.writeInt(edgeFlags);
}
public void readFromParcel(Parcel source){
edgeFlags=source.readInt();
deviceId=source.readInt();
yPrecision=source.readFloat();
xPrecision=source.readFloat();
metaState=source.readInt();
size=source.readFloat();
pressure=source.readFloat();
y=source.readFloat();
x=source.readFloat();
action=source.readInt();
eventTime=source.readLong();
downTime=source.readLong();
}
}
// AIDL
interface IData {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
boolean senMotionEvent(in Data data);
}
クライアントアプリケーションのデータを送信します。
@Override
public boolean onTouchEvent(final MotionEvent event) {
return super.onTouchEvent(event);
Intent serviceIntent=new Intent();
serviceIntent.setComponent(new ComponentName("XX.XXX.XXX","XX.XXX.XXX.service"));
this.bindService(serviceIntent,new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
IData iData= IData.Stub.asInterface(service);
Data data= new Data();
data.downTime=event.getDownTime();
data.eventTime=event.getEventTime();
data.action=event.getAction();
data.size=event.getSize();
data.metaState=event.getMetaState();
data.yPrecision=event.getYPrecision();
data.xPrecision=event.getXPrecision();
data.x=event.getX();
data.y=event.getY();
data.edgeFlags=event.getEdgeFlags();
data.deviceId=event.getDeviceId();
data.pressure=event.getPressure();
try {
boolean isSuccess= iData.senMotionEvent(data);
Log.d("sendEvent","send motionevent result:"+isSuccess);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
LogUtils.debug("serviceConnection is not connected.");
}
},Context.BIND_AUTO_CREATE);
}
最後に、あなたはサービスアプリでメッセージを取得する必要があります。
public class IDataService extends Service {
public class IDataBinder extends IData.Stub {
private Context mContext;
public IDataBinder(Context context){
this.mContext=context;
}
boolean senMotionEvent(Data data){
//add operation code of services.
return true;
}
/**
* Cast an IBinder object into an Aidl interface,
* generating a proxy if needed.
*/
public static IData asInterface(android.os.IBinder obj) {
return IData.Stub.asInterface(obj);
}
}
IDataBinder iDataBinder=new IDataBinder(this);
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return iDataBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
完了です。
ありがとうございました。 このソリューションはroot権限なしで動作しますか? –
必要ありません。これはすべてです。アイルは、アンドロイド間の標準的な通信プロセスです。 – amiko
こんにちは、 あなたの答えをありがとう。 サンプルコードに問題があります。 IMessageAIDLとは何ですか? –
- 1. ArrayListを送信する方法他のクラスを送信
- 2. タッチイベントを兄弟ビューに送信
- 3. 他のアプリにレコードを送信するSQLite DBのXMLパーサー
- 4. Bluetooth経由で他のiPhoneにファイルを送信する方法
- 5. 他のiPhone/Androidに画像やサウンドを送信する方法
- 6. アプリにログファイルを自動的に送信する方法
- 7. ビューからコントローラへのタッチイベントの送信
- 8. ライブラリーからアプリに通知を送信する方法
- 9. PHPサーバーからAndroidアプリに通知を送信する方法
- 10. 他のページへの送信ボタンリンクを作成する方法
- 11. アプリからのリクエストのみを送信する方法
- 12. opentalkのアプリをバックグラウンドで送信する方法は?
- 13. Xcodeでアプリ内の電子メールを送信する方法は?
- 14. 画像とテキストを送信して他のアプリに共有する方法を教えてください
- 15. 他のコントロールにキーストロークを送信する
- 16. 画像を送信してAndroidアプリをインストールする方法は?
- 17. UWP 10アプリ経由で電子メールを送信する方法
- 18. アプリがプッシュ通知を送信する方法
- 19. Androidアプリが送信しているデータを知る方法
- 20. Microsoft Wordを含む他のアプリケーションに文字列を送信する方法
- 21. 他のユーザーがオフラインのときにピアツーピアメッセージングでメッセージを送信する方法は?
- 22. 他のPCに相対的なマウスの動きを送信する方法
- 23. iosアプリをアプリストアに送信
- 24. Facebookアプリ:ユーザーにメッセージを送信する
- 25. iPhoneアプリをサードパーティに送信する
- 26. フックフォームを使用して送信他のファンクションを停止する方法は同じですか送信
- 27. iosアプリからこのURLにポストリクエストを送信する方法をpythonリクエストで
- 28. Android KitkatのSMSをデフォルト以外のアプリからSMSに送信する方法
- 29. アプリのインストール時にメールを送信する方法は?私のアンドロイドアプリケーションで
- 30. 小さなnodejsチャットアプリで他の人にファイルを送信する方法
インテントを使用すると、このリンクは役に立ちます:https://developer.android.com/guide/components/intents-filters.html – diegoveloper