手机口袋模式功能

手机口袋模式功能

一.口袋模式定义

实际上很难判断手机是否处于口袋中,口袋场景太复杂,目前市场上口袋模式没有一个确定的定义,参考其它手机和自己做过产品。

定义:手机是处于竖立状态并且距离传感器是被遮挡。

实现原理:加速度传感器判断手机是否处于竖立状态,距离传感器判断是否被遮挡。

应用场景:1.来电铃声自动调到最大音,拿出口袋恢复之前声音大小。2.口袋模式下自动锁屏或灭屏,拿出口袋自动解锁或亮屏。。。可以根据产品定义功能。

下面代码是来电铃声自动调到最大音功能为例,该功能实在原生incallUi应用上实现,代码实现位置如下。

packages\apps\InCallUI\src\com\android\incallui\ProximitySensor.java

//变量声明 begin

private

static

final

float

CRITICAL_DOWN_ANGLE

=

-

8.0f

;

private

static

final

float

CRITICAL_UP_ANGLE

=

8.0f

;

private

static

final

int

SPEED_SHRESHOLD

=

800

;

private

SensorManager

mSensorManager

;

private

Sensor

mGsensorAccelerometer

;//加速度传感器

private Sensor mGsensorProximity;//距离传感器

private

int

mReverseDownFlg

=

-

1

;

private

float

lastX

;

private

float

lastY

;

private

float

lastZ

;

private

static

final

int

UPTATE_INTERVAL_TIME

=

70

;

private static final String POCKET_MODE = "pocket_mode_for_call";

float

tMax

=

1.0f

;

float

tMaxleft

=

0.1f

;

private

long

lastUpdateTime

;

SensorEventListener

mySensorListener

;

boolean

disInRang

=

false

;

int

previousMuteMode

=

-

1

;

boolean

mActFlag

=

false

;

boolean isPocket = false;

float distance = 10;

float MAXRANGDISTANCE =1.0f;

int

previousRing

=

0

;

boolean

isRing

=

false

;

AudioManager

am

;

//变量声明 end

public

ProximitySensor

(

Context

context

,

AudioModeProvider

audioModeProvider

,

AccelerometerListener

accelerometerListener

)

{

mContext

=

context

;

mPowerManager

=

(

PowerManager

)

context

.

getSystemService

(

Context

.

POWER_SERVICE

);

相关推荐

世界杯提升俄罗斯形象
365卫士杀毒清理大师

世界杯提升俄罗斯形象

📅 07-28 👁️ 4598
御龙在天龙魂等级详解:完整255级攻略与解析
365卫士杀毒清理大师

御龙在天龙魂等级详解:完整255级攻略与解析

📅 07-10 👁️ 6937
麻将有多少张牌优质
365卫士杀毒清理大师

麻将有多少张牌优质

📅 08-08 👁️ 5201