Android 如何在按下Click Listener后禁用来自Amazon Fire TV控制器的输入?
我有一个列表视图,上面有一个频道列表,当我按下其中一个频道时,它开始加载一个流URL来观看该频道。但是,我仍然可以在列表中导航,并在列表中选择另一个导致异常发生的条目。如何禁用控制器输入,类似于按下某个按钮后禁用触摸输入 以下是我的McClickListener的代码:Android 如何在按下Click Listener后禁用来自Amazon Fire TV控制器的输入?,android,amazon-fire-tv,Android,Amazon Fire Tv,我有一个列表视图,上面有一个频道列表,当我按下其中一个频道时,它开始加载一个流URL来观看该频道。但是,我仍然可以在列表中导航,并在列表中选择另一个导致异常发生的条目。如何禁用控制器输入,类似于按下某个按钮后禁用触摸输入 以下是我的McClickListener的代码: channel_list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
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);
}
};
}
});
要禁用触摸输入,请为Amazon Fire TV查找类似的内容。决定使用频道列表视图。设置可点击(错误)以防止用户点击它。我们需要代码@Blundell为onClickListener添加了我的代码,但不确定这是否有帮助。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);