-1
사용자가 안드로이드 모바일에서 오디오를 재생할 때 귀를 가까이하면 볼륨이 줄어들고 오디오는 줄어들도록 응용 프로그램에서 기능을 구현하고 싶습니다. 이어 피스를 통해 재생해야합니다. (사용자가 음성 메모를 듣고 귀에 가까이 다가 갈 때 응용 프로그램이하는 것과 비슷한 방식입니다.) 다음 코드에서 잘못된 점을 제안하십시오. 도와 주셔서 감사합니다. 다음 코드근접 센서 및 오디오 관리자를 사용하여 안드로이드 장치의 볼륨을 줄이는 방법
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mSensor;
ImageView iv;
Button b;
MediaPlayer player;
private AudioManager mAudioManager;
public boolean isHeadsetOn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sensor);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
iv = (ImageView) findViewById(R.id.image);
b = (Button) findViewById(R.id.audio);
mAudioManager = (AudioManager) SensorActivity.this.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.STREAM_MUSIC);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (player != null && player.isPlaying()) {
player.stop();
player.release();
} else {
AssetFileDescriptor afd;
try {
afd = getAssets().openFd("Kraddy Android Porn.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
player.prepare();
player.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
try {
// unregisterReceiver(mReciever);
mSensorManager.unregisterListener(this);
} catch (Exception e) {
e.printStackTrace();
}
if (player != null && player.isPlaying()) {
player.stop();
player.release();
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
Log.e("distance", String.valueOf(event.values[0]));
if (event.values[0] == 0) {
iv.setImageResource(R.drawable.near);
mAudioManager.setSpeakerphoneOn(false);
} else {
iv.setImageResource(R.drawable.far);
mAudioManager.setSpeakerphoneOn(true);
}
}
}
고맙습니다. 작동합니다! 이 코드를 사용할 사람 : Manifest에 을 추가하는 것을 기억하고 싶습니다. 아마도 당신은 이미 그것을 알고 있지만, 나는이 부족한 허락 때문에 나의 인생에서 4 시간을 낭비했습니다! 디: –
Kurtis92