Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接近传感器-静音呼叫应用_Java_Android_Android Activity_Android Sensors_Proximitysensor - Fatal编程技术网

Java 接近传感器-静音呼叫应用

Java 接近传感器-静音呼叫应用,java,android,android-activity,android-sensors,proximitysensor,Java,Android,Android Activity,Android Sensors,Proximitysensor,我正在尝试构建一个安卓应用程序,当一个人用接近传感器在手机上挥动他的/她的手时,它会使电话静音 我是android开发新手。 我试着让应用程序检查手机是否处于待机状态。如果是,则应用程序检查接近传感器的值是否=0(接近值)。如果接近传感器的值为0,则表示在振铃广告期间传感器被覆盖,因此应使呼叫静音。 但它仍然处于响铃状态 我认为问题在于,ServiceReceiver仅在手机开始响时检查接近传感器的值。如果此时传感器值不为零,则手机不会静音。 那么,我如何让它在整个铃声或来电过程中检查接近传感器

我正在尝试构建一个安卓应用程序,当一个人用接近传感器在手机上挥动他的/她的手时,它会使电话静音

我是android开发新手。 我试着让应用程序检查手机是否处于待机状态。如果是,则应用程序检查接近传感器的值是否=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 + "*******");



    }

}
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");



    }
}


}
第二类“ServiceReceiver”包含接近传感器的代码

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 + "*******");



    }

}
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");



    }
}


}
提前感谢:-)

而不是

amanager.setRingerMode(0x00000000);  
试一试


谢谢但是静音功能可以工作。问题在于,该程序仅在手机开始鸣响时检查接近传感器的值,如果没有任何东西覆盖传感器,则振铃器不会静音。但我希望它一直检查,直到响铃停止,接近传感器的值发生变化。