2016-12-30 1 views
0

私はそれらのチャンネルのリストを持つリストビューを持っています。そして、私がチャンネルの1つを押すと、チャンネルを見るためにストリーミングURLを読み込み始めます。しかし、私はまだリストをナビゲートし、リスト内の別のエントリを選択して例外を発生させることができます。何かが押されたら、どのように私がタッチ入力を無効にすることができるようにコントローラの入力を無効にすることができますか?ここでリスナーをクリックした後、Amazon Fire TV Controllerからの入力を無効にするにはどうすればよいですか?

は私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); 

を使用することができます知っています。

+0

コードが必要です。 – Blundell

+0

@BlundellはonClickListenerのコードを追加しましたが、それが役立つかどうかはわかりません。 –

答えて

0

channel_list_view.setClickable(false)を使用して、ユーザーがクリックしないようにすることを決定しました。

関連する問題