2017-02-20 3 views
0

ExoPlayer 2を介してインターネットからオーディオを再生するコードがあります。着信音が0にミュートされ、通話が終了したら元に戻す方法は? )サイレントアプリのミュート

class TeleListener extends PhoneStateListener { 
    public void onCallStateChanged(int state, String incomingNumber) { 
     super.onCallStateChanged(state, incomingNumber); 
     switch (state) { 
      case TelephonyManager.CALL_STATE_IDLE: 
       // CALL_STATE_IDLE; 
       setVolumeOn(); 
       break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       // CALL_STATE_OFFHOOK; call ends      
       break; 
      case TelephonyManager.CALL_STATE_RINGING: 
       // CALL_STATE_RINGING 
       silent(); 
       break; 
      default: 
       break; 
     } 
    } 
} 

()とsetVolumeOn(です:

public class Player extends AppCompatActivity { 

    private String stream; 
    private boolean isPlay; 

    private ImageButton btnPLayPause; 

    BandwidthMeter bandwidthMeter; 
    TrackSelector trackSelector; 
    SimpleExoPlayer player; 
    private SimpleExoPlayerView simpleExoPlayerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_player); 

     btnPLayPause = (ImageButton) findViewById(R.id.btnPLayPause); 

     stream = "http://site.ru/radio.mp3"; 

     bandwidthMeter = new DefaultBandwidthMeter(); 
     TrackSelection.Factory streamSelectionFactory = new AdaptiveVideoTrackSelection.Factory(bandwidthMeter); 
     trackSelector = new DefaultTrackSelector(streamSelectionFactory); 

     player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl()); 
     simpleExoPlayerView = new SimpleExoPlayerView(this); 
     simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player_view); 
     simpleExoPlayerView.setUseController(true); 
     simpleExoPlayerView.requestFocus(); 
     simpleExoPlayerView.setPlayer(player); 
     Uri streamUri = Uri.parse(stream); 
     DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); 
     DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "yourApplicationName"), bandwidthMeter); 
     ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); 

     MediaSource mediaSource = new ExtractorMediaSource(streamUri, dataSourceFactory, extractorsFactory, null, null); 
      player.prepare(mediaSource); 

     player.setPlayWhenReady(true); 
     isPlay = true; 

     if (player.getPlayWhenReady() == true) { 
      btnPLayPause.setImageResource(R.drawable.icon_stop); 
     } 

    } 

    @Override 
    protected void onDestroy() { 
     NotificationManager notifManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notifManager.cancelAll(); 
     super.onDestroy(); 
     player.release(); 
    } 

    public void onPlayPause(View view) { 
     if (isPlay == true) { 
      if (player.getPlayWhenReady() == true) { 
       player.setPlayWhenReady(false); 
       isPlay = false; 
       btnPLayPause.setImageResource(R.drawable.icon_play); 
      } 
     } else if (isPlay == false) { 
      if (player.getPlayWhenReady() == false) { 
       player.setPlayWhenReady(true); 
       isPlay = true; 
       btnPLayPause.setImageResource(R.drawable.icon_stop); 
      } 
     } 
    } 

} 

あなたがPhoneStateListener、そのような何かを実装する必要が同様の例に

答えて

0

を例またはリンクを与えることが望ましいです。基本的には、現在の音量レベルを無音に保ち、音声を無音にしてからsetVolumeOn()で復元する必要があります。

登録方法(開始聴取):

private TeleListener teleListener; 
private TelephonyManager telephonyMgr; 
public void start() { 
    teleListener = new TeleListener(); 
    telephonyMgr.listen(teleListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

と登録解除(聞く停止):

public void stop() { 
    telephonyMgr.listen(teleListener, PhoneStateListener.LISTEN_NONE); 
} 
関連する問題