MediaPlayer和接近传感器:在扬声器和耳机之间切换

时间:2017-12-08 23:10:31

标签: java android android-mediaplayer android-audiomanager proximitysensor

我是Android新手!我正在编写一个简单的媒体播放器,我想在播放音频时在扬声器和耳机之间切换。我设置了一个接近传感器,当设备靠近耳朵时,我希望它通过耳机播放,反之亦然。目前我写了这段代码:

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SensorEventListener{

    TextView proxText;
    SensorManager sm;
    Sensor proxSensor;
    MediaPlayer mp;
    AudioManager am;

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

        mp = MediaPlayer.create(this, R.raw.audio);
        mp.start();

        am =(AudioManager)getSystemService(Context.AUDIO_SERVICE);

        sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        proxSensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        proxText = (TextView) findViewById(R.id.proximityTextView);

        sm.registerListener(this,proxSensor, SensorManager.SENSOR_DELAY_NORMAL);

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.values[0]<event.sensor.getMaximumRange()){
            proxText.setText("close");
            mp.setAudioStreamType(am.STREAM_VOICE_CALL);
        }
        else
            proxText.setText("far");
        mp.setAudioStreamType(am.STREAM_MUSIC);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
}

但它不起作用......我想我没有正确设置MediaPlayer和AudioManager。

你能帮帮我吗?先感谢您! ; - )

0 个答案:

没有答案