package net.xxxxxxxxxxxxxxxxx.muxic;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.input.InputManager;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import static android.app.Service.START_STICKY;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//System.out.println(isConnected(this));
setContentView(R.layout.activity_main);
if(isConnected(this)) {
//startActivity(new Intent("com.google.music"));
/*Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);*/
View view = (View) findViewById(R.id.layoutView);
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
view.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
Toast toast = Toast.makeText(
getApplicationContext(),
"View touched",
Toast.LENGTH_LONG
);
toast.show();
return true;
}
});
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);
}
}
@Override
public boolean onTouchEvent(MotionEvent e) {
// MotionEvent reports input details from the touch screen
// and other input controls. In this case, you are only
// interested in events where the touch position changed.
float x = e.getX();
float y = e.getY();
Log.d("[DEBUG]", "X: " + x + "Y: " + y);
return true;
}
public void fox(View v){
Log.d("[DEBUG]", "X: " + v.getPivotX() + ", Y: " + v.getPivotY());
}
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
return intent.getExtras().getBoolean("connected");
}
}
我想要实现的目标
主要目标是能够检查用户是否连接到设备,如果为TRUE,则将用户重定向到HOME,其中有一个小部件等待按下。然后触发一个事件,该事件将自动触摸小部件以开始播放音乐。
注意:音乐部分由单独的应用完成。这就是为什么我让应用程序重定向到HOME(通过意图触发/重定向),然后在X处执行按钮:(此处为坐标X)和Y :(此处为坐标Y)。
我不在乎我是否必须root,使用平台密钥签名,以及所有这些因为我将是唯一一个将使用它的人。
我做了什么?
注意:如上所述,我见过的大部分内容都很旧(2010-2014)。因为当我试图找到system_signature时,它不在另一个stackoverflow问题中提到的目录中。如果你们能给我一个小指针,那真的很有帮助!
EXTRA :如果“已连接”状态发生变化,我每隔X秒检查一次也有问题。如果它再次连接之前没有做任何事情。 (我相信这是通过后台服务来完成的。按照说法给我一个正确的名称谷歌,我会做我自己的研究,或者如果你给我一个明确的答案,也有帮助。)[不需要,但会很酷。]
图片用户界面
Widget UI - 希望这可以帮助您了解我要尝试的内容。