按下点击侦听器后,如何从Amazon Fire TV控制器中禁用输入



我有一个列表视图,上面有一个频道列表,当我按一个频道时,它开始加载流urol以观看频道。但是,我仍然可以浏览列表,然后在列表中选择导致异常发生的另一个条目。如何禁用控制器输入,类似于我如何按下某些内容后可以禁用触摸输入?

这是我的onItemClickListener的代码:

channel_list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                main_progressBar.setVisibility(View.VISIBLE);
                //to disable touch input
                //getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

                final int channel = channelListAdapter.getItem(position);
                final String switch_major = majorChannelNumberList.get(channel);
                Log.d(TAG, "Switch Major :" + switch_major);
                final String switch_minor = minorChannelNumberList.get(channel);
                Log.d(TAG, "Switch Minor :" + switch_minor);
                final String switch_name = channelNameList.get(channel);
                Log.d(TAG, "Switch Name :" + switch_name);
                final String tuner = tuneLink + "Major=" + switch_major + "&Minor=" + switch_minor + "&Resolution=" + "1280x720";
                Log.d(TAG, "Tuner String :" + tuner);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        String playlive = "";
                        String tuneResponse = tuneConnection.get_response(tuner);
                        if(tuneResponse.contains("successful")){
                            long startTime = System.currentTimeMillis();
                            do {
                                String hlsStatusResponse = hlsConnection.get_response(HLSLink);
                                Log.d(TAG,"HLS Status Response :" + hlsStatusResponse);
                                Matcher matcher = Pattern.compile("<hls_link>(.+?)</hls_link>").matcher(hlsStatusResponse);
                                while(matcher.find()){
                                    playlive = matcher.group(1);
                                }
                                playlink = "http://" + ip + "/" + playlive;
                            } while (Objects.equals(playlive, "none") && (System.currentTimeMillis()-startTime)<20000);
                            if(!playlink.contains("none")){
                                streamConnection.get_response(playlink);
                            } else {
                                //TODO: implement some sort of message here to show no channel, see tablet app
                            }
                        } else {
                            Toast.makeText(OfflineActivity.this, "Ch " + switch_major + "-" + switch_minor + " " + switch_name + " is not available now",
                                    Toast.LENGTH_LONG).show();
                        }
                    }
                }).start();
                //start player activity
                streamConnection.responseHandler = new Handler(){
                    @Override
                    public void handleMessage(Message message){
                        Toast.makeText(OfflineActivity.this, "Tune to Channel " + switch_major + "-" + switch_minor, Toast.LENGTH_LONG).show();

                        Intent intent = new Intent(OfflineActivity.this, OfflinePlaybackActivity.class);
                        intent.putExtra("stream",playlink);
                        intent.putExtra("channel_index", channel);
                        startActivity(intent);

                        main_progressBar.setVisibility(View.INVISIBLE);
                    }
                };
            }
        });

我知道我可以使用

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

禁用触摸输入,寻找Amazon Fire TV类似的东西。

决定使用Channel_list_view.setClickable(false)来防止用户单击它。

最新更新