Датчик приближения - приложение Silence call

Я пытаюсь создать приложение для Android, которое отключает звонок, когда человек машет рукой над телефоном, когда он начинает звонить / вибрировать с помощью датчика приближения.

Я новичок в разработке Android. Пытался заставить приложение проверять, находится ли телефон в State-Rining. Если это так, приложение проверяет, равно ли значение датчика приближения == 0 (близкое значение). Если значение для датчика приближения равно 0, это означает, что датчик был закрыт во время звонка, поэтому он должен отключить звук при вызове. Но он все еще в звенящем состоянии.

Я думаю, проблема в том, что ServiceReceiver проверяет значение датчика приближения только тогда, когда телефон начинает звонить. Если в этот момент показания датчика не равны нулю, телефон не выключается. Итак, как я могу заставить его проверять изменение значения датчика приближения во время звонка или входящего вызова, чтобы, как только значение датчика становится равным нулю, звонок отключается

Первый класс «mainactivity» содержит код для датчика приближения.

package example.ringcheck;


import android.app.Activity;
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.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity implements SensorEventListener {
static TextView proxText;
SensorManager sm;
Sensor proxSensor;
static float proxValue = 8;
// static boolean muteCall = false;
private AudioManager amanager;


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

    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 boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {


    // TODO Auto-generated method stub
    proxText.setText(String.valueOf(event.values[0]));
    proxValue = event.values[0];
    Log.d("SENSOR VALUE", "********" + proxValue + "*******");



    }

}

Второй класс ServiceReceiver содержит код датчика приближения.

package example.ringcheck;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.telephony.TelephonyManager
import android.util.Log;

public class ServiceReceiver extends BroadcastReceiver {

private AudioManager amanager;
// static boolean isRinging = false;

public void onReceive(Context context, Intent intent) {

    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
            TelephonyManager.EXTRA_STATE_RINGING)) {
        // isRinging = true;
            if (MainActivity.proxValue == 0) {
                amanager = (AudioManager) context
                        .getSystemService(Context.AUDIO_SERVICE);
                amanager.setRingerMode(0x00000000);
                // isRinging = false;

            }

    Log.d("MPR", "Its Ringing");



    }
}


}

Заранее спасибо :-)


person user2175058    schedule 15.03.2013    source источник


Ответы (1)


Вместо того

amanager.setRingerMode(0x00000000);  

Пытаться

amanager.setStreamMute(AudioManager.STREAM_RING, true);
person Hoan Nguyen    schedule 15.03.2013
comment
Спасибо! Но функция отключения звука работает. Проблема в том, что программа проверяет значение датчика приближения только тогда, когда телефон начинает звонить, если ничего не закрывает датчик, звонок не отключается. Но я хочу, чтобы он продолжал проверять, пока не перестанет звонить изменение значения датчика приближения. - person user2175058; 16.03.2013