首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WearOS onGenericMotionListener未调用

WearOS onGenericMotionListener未调用
EN

Stack Overflow用户
提问于 2022-11-10 17:24:56
回答 1查看 26关注 0票数 0

当我在三星Galaxy Watch 4上旋转我的眼罩时,我正试图捕捉它的动作,但它从来没有“运行”过。

这是我的代码:

代码语言:javascript
复制
findViewById(R.id.Badtunna).setOnGenericMotionListener(new View.OnGenericMotionListener() {
        @Override
        public boolean onGenericMotion(View view, MotionEvent motionEvent) {
            System.out.println("GUM");
            if(motionEvent.getAction() == MotionEvent.ACTION_SCROLL &&
            motionEvent.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)) {
                System.out.println("BUBBEL");

                return true;
            }
            return false;
        }
    });

我的观点是一个普通的TextView:

代码语言:javascript
复制
<TextView
            android:id="@+id/Badtunna"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Badtunna" />

这是我的onCreate()在MainActivity中

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());

    StrictMode.ThreadPolicy policy = new
    StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    // Add all the domoticz devices
    domoticz_devices.put(766, "idx_766");
    domoticz_devices.put(17, "idx_17");

    findViewById(R.id.Skymningssensor).requestFocus();

    findViewById(R.id.Skymningssensor).setOnGenericMotionListener(new View.OnGenericMotionListener() {
        @Override
        public boolean onGenericMotion(View view, MotionEvent motionEvent) {
            System.out.println("GUM");
            if(motionEvent.getAction() == MotionEvent.ACTION_SCROLL &&
                    motionEvent.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)) {
                System.out.println("BUBBEL");

                return true;
            }
            return false;
        }
    });

    TextView idx_17_button = findViewById(R.id.idx_17);
    idx_17_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try {
                toggleDomoticzDevice(17, "idx_17");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    TextView idx_657_button = findViewById(R.id.idx_657);
    idx_657_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try {
                toggleDomoticzDevice(657, "idx_657");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });


    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            for (Integer i : domoticz_devices.keySet()) {
                getDomoticzDeviceAndSetTextview(i, domoticz_devices.get(i));
            }
            handler.postDelayed(this, delay);
        }
    }, delay);
}

当焦点在“工作”时,键盘应该弹出吗?我还更新了我的TextView并添加了可聚焦的:true和focusableintouchmode:true

提前感谢!

向麦克斯问好

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 12:28:59

医生来了

https://developer.android.com/training/wearables/user-input/rotary-input#custom-scrolling

可能的问题是焦点

记住要确保您的视图获得焦点,否则事件就不会发生。

https://developer.android.com/training/wearables/user-input/rotary-input#custom-scrolling

默认情况下,启动一个活动甚至点击一个视图都不会给它带来焦点,即使它是可聚焦的。为了提供视图焦点,视图必须使用标记或手动调用View.requestFocus().

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74393038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档