在系统android java

时间:2017-06-25 03:42:14

标签: java android

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,使用平台密钥签名,以及所有这些因为我将是唯一一个将使用它的人。

我做了什么?

  • 搜索谷歌超过一个小时。找到了一堆教程,但其中大部分已经过时而且不是noob证明。但是,下面的代码实际上来自其他stackoverflow问题。 (因为我所做的只是谷歌我需要做的事情,并开始将它们混合在一起,希望它能起作用。)
  • 查看StackOverflow有关模拟触摸事件触摸事件android MotionEvent for android java 使用系统签名应用程序的答案触摸事件的许可



注意:如上所述,我见过的大部分内容都很旧(2010-2014)。因为当我试图找到system_signature时,它不在另一个stackoverflow问题中提到的目录中。如果你们能给我一个小指针,那真的很有帮助!

EXTRA :如果“已连接”状态发生变化,我每隔X秒检查一次也有问题。如果它再次连接之前没有做任何事情。 (我相信这是通过后台服务来完成的。按照说法给我一个正确的名称谷歌,我会做我自己的研究,或者如果你给我一个明确的答案,也有帮助。)[不需要,但会很酷。]

图片用户界面

Widget UI - 希望这可以帮助您了解我要尝试的内容。

0 个答案:

没有答案