首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setRingerMode(AudioManager.RINGER_MODE_VIBRATE)未按预期工作

setRingerMode(AudioManager.RINGER_MODE_VIBRATE)未按预期工作
EN

Stack Overflow用户
提问于 2013-06-20 18:01:57
回答 1查看 960关注 0票数 0
代码语言:javascript
复制
public class ProximityService extends Service implements SensorEventListener{

    boolean hasproximity=false;
    SensorManager mSensorManager;
    AudioManager am;
    Sensor psensor;

    public ProximityService() {

    }
    @Override
    public void onCreate() {
        super.onCreate();
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        if(mSensorManager.getSensorList(Sensor.TYPE_PROXIMITY).size()>0) {
            Toast.makeText(getApplicationContext(),"Proximity Sensor Detected",Toast.LENGTH_SHORT).show();
            hasproximity=true;
            psensor=mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
            Toast.makeText(getBaseContext(), "sensor event listener addded", Toast.LENGTH_SHORT).show();
            mSensorManager.registerListener(this,psensor,SensorManager.SENSOR_DELAY_UI);
        } else {
            hasproximity=false;
            Toast.makeText(getApplicationContext(),"No Proximity Sensor",Toast.LENGTH_SHORT).show();
            stopSelf();
        }
    }
    @Override

    public void onDestroy() {
        super.onDestroy();
        mSensorManager.unregisterListener(this);
        Toast.makeText(getBaseContext(), "service destroyed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

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

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        float vals[]=event.values;
        float x; // light value is 0.0 then it is dark
        x=vals[0];
        Toast.makeText(getBaseContext(), "light:"+x, Toast.LENGTH_SHORT).show();
        if(x == 0.0) {
            Toast.makeText(getBaseContext(), "prox closed", Toast.LENGTH_SHORT).show();
            am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
        } else {
            Toast.makeText(getBaseContext(), "prox open", Toast.LENGTH_SHORT).show();
            am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        }
    }
}

此代码用于在覆盖接近感应器时将电话振铃模式从振铃改为振动,即接近感应器接收的光值变为零。

问题是,如果当我们盖上接近传感器时手机已经响起,那么手机将进入静音模式,而不是振动模式。

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-05 21:10:56

您可以使用此代码在>= Jerry Bean版本中进行更改:

代码语言:javascript
复制
Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0); //vibrate off
Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 1); //vibrate on

记得添加权限:

代码语言:javascript
复制
 <uses-permission android:name="android.permission.WRITE_SETTINGS" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17210783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档