标签: proximitysensor

在通话期间禁用接近传感器

我放下手机,看起来我的接近传感器不再可靠.它一直返回近处.问题是,在通话期间显示屏关闭,我将无法使用数字键盘输入别针或会议另一个电话,甚至断开呼叫.我在辅助功能设置中找到了电源按钮断开连接选项并立即使用它.

我试图创建一个应用程序,试图在收到一个电话时获得一个完整的唤醒锁,希望它能保持显示.

  • 创建一个广播接收器,当电话状态变为OFFHOOK时调用服务

  • 该服务获得一个完整的唤醒锁,只有当手机状态为IDLE时才会释放它.

但是,接近传感器会关闭显示屏.我使用isHeld()方法来确保获取锁.我使用了PowerManager的isScreenOn()方法,即使在通话期间屏幕关闭时它也返回true.我试图在一个循环中每两秒获取一次唤醒锁进行测试,但显示器仍然不会出现.

我正在使用Nexus 5 Android版本4.4.4

任何人都可以建议超越接近传感器的行为吗?根要求的选项也没关系.

谢谢!

android telephony telephonymanager proximitysensor android-dialer

30
推荐指数
5
解决办法
15万
查看次数

覆盖接近传感器时保持显示

我想在不关闭显示屏的情况下拦截接近传感器.

我从文档中知道我有两个Bool变量:

proximityMonitoringEnabled
proximityState
Run Code Online (Sandbox Code Playgroud)

和这段代码

[UIDevice currentDevice].proximityMonitoringEnabled = YES;
Run Code Online (Sandbox Code Playgroud)

当接近传感器检测到某些东西时,它会关闭显示屏,就像在打电话时将手机放在耳边一样.

覆盖接近传感器时如何保持显示屏开启?

iphone proximity uidevice ios proximitysensor

13
推荐指数
3
解决办法
9744
查看次数

如何使用接近传感器拍照?

启用接近传感器时,我无法让设备使用后视摄像头拍摄图像.我不希望相机预览显示,只是希望设备拍摄照片并将其显示在imageView中.我有接近传感器工作,我正在使用接近传感器启用imagePicker.takePicture()时拍摄图像,但这似乎不起作用.我可以使用什么方法/函数以编程方式拍摄没有用户输入的图片.

到目前为止这是我的代码:

class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

@IBOutlet var imageView: UIImageView!

var imagePicker: UIImagePickerController!

//*The function in question*  
func proximityChanged(notification: NSNotification) {
    let device = notification.object as? UIDevice
    if device?.proximityState == true {
        print("\(device) detected!")
Run Code Online (Sandbox Code Playgroud)

image uiimageview ios proximitysensor swift

12
推荐指数
1
解决办法
669
查看次数

检测手机是否在口袋中

这个问题并不完全是关于代码而是实现.

我正在开发一款需要检查手机是否放入口袋的应用程序.我有一个简单的算法来检测行走时的用户步骤.问题是手中的移动也可以注册为一个步骤,例如当用户运行应用程序并将步骤值从他/她执行此操作的时间归零到手机放在口袋中时,应用程序会注册几个步骤.

我的想法是检查接近传感器,看看手机是否放在口袋里.

我对加速计传感器的处理是我继续读取缓冲区中的加速度计值,当缓冲区满了,然后计算步数(计算时,缓冲区仍在接受新的加速度计读数).

因为我听说接近传感器是基于中断而不是基于轮询的(如acc传感器).我如何将这两者协调在一起?

如果我在将acc值写入缓冲区之前检查接近度是否安全,并在计算开始时再次检查它,如果接近度不是FAR模式,我可以假设手机放在口袋里?

欢迎任何建议!

android proximity proximitysensor

10
推荐指数
0
解决办法
1234
查看次数

如何在iOS开发中以编程方式使用接近传感器?

经过一些谷歌搜索,我可以理解"接近传感器",当设备离开/靠近用户时,用于开/关屏幕.我观看了这段视频(从第30秒开始观看)并对这些很酷的东西感到惊讶.我想在我的应用程序中实现它.

然而,我想知道有没有公共API可用时,可以保护屏幕锁proximityMonitoringEnabledYES.然后上面的应用程序如何做到这一点?

为了清楚地理解,我正在复制一些代码.

启用接近传感器:

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
Run Code Online (Sandbox Code Playgroud)

设置传感器更换的观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateMonitor:) name:@"UIDeviceProximityStateDidChangeNotification" object:nil];
Run Code Online (Sandbox Code Playgroud)

最后,您可以通过以下方法找到接近传感器的状态:

- (void)sensorStateMonitor:(NSNotificationCenter *)notification
{
    if ([[UIDevice currentDevice] proximityState] == YES)
    {
        NSLog(@"Device is close to user.");
    }

    else
    { 
        NSLog(@"Device is not closer to user.");
    }
}
Run Code Online (Sandbox Code Playgroud)

题:

我想在调用"设备接近用户"状态时显示一些视图.并且如果调用"设备不接近用户"状态,则要删除视图.

所以我在sensorStateMonitor:方法中添加了一个视图并删除了.但是视图只在几秒钟内可见,并且屏幕熄灭.

我可以阻止屏幕自动关闭吗?

只是困惑!!

monitoring screen ios proximitysensor

10
推荐指数
1
解决办法
6777
查看次数

Android接近传感器仅在三星设备中出现问题

避免问题的具体方案:
三星设备中的活动行为与每次检测到更改时的行为不同,对于接近,它onPause()/onResume()仅导致在SAMSUNG设备上进行呼叫.

我正在清理接近传感器onPause(),导致三星设备独有的行为.

希望这可以为任何正面对此的人节省一些时间.我删除了清除邻近侦听器的调用,onPause()现在它在所提到的设备上按预期工作.

更新:

下面提到的不是唯一的问题,接近传感器不一致地以这种方式表现.另一个问题是一个地方:

if (!mWakeLock.isHeld()) mWakeLock.acquire();

随机地,if()因此mWakeLock.acquire()并不总是调用所提及的设备的返回false .

可能相关的信息:

mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName()); 
Run Code Online (Sandbox Code Playgroud)

哪里

field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
Run Code Online (Sandbox Code Playgroud)

我的接近传感器代码仅在
1 工作正常.三星GT-I9082 Android 4.2.2(API 17)[
duos grand] 2.三星SM-G925I Android 5.1.1(API 22)[s6 edge]

代码:

 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    ...new SensorEventListener() {
                @Override
                public void onSensorChanged(SensorEvent event) {
                    if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
                        if (event.values[0] <= 5) { //Sleep
                            turnOffScreen();
                        } else …
Run Code Online (Sandbox Code Playgroud)

android proximity android-sensors samsung-mobile proximitysensor

9
推荐指数
1
解决办法
1693
查看次数

Proximity Sensor无法在iPhone 4设备中运行

//I have created below snippet to let the sensor to be detected.

-(void)addProximitySensorControl {

    UIDevice *device = [UIDevice currentDevice];
    device.proximityMonitoringEnabled = YES;

    BOOL state = device.proximityState;
    if(state)
        NSLog(@"YES");
    else
        NSLog(@"NO");

    [[NSNotificationCenter defaultCenter] addObserver:self
                            selector:@selector(proximityChanged:)
                                name:@"UIDeviceProximityStateDidChangeNotification"
                                object:nil];
}
Run Code Online (Sandbox Code Playgroud)

在iPhone 3GS或更早版本的proximityChanged:方法被成功调用,但在iPhone 4中,当我从上方悬停物体时,传感器(屏幕)未被检测到.任何想法伙计们?

iphone ios proximitysensor

6
推荐指数
1
解决办法
1691
查看次数

接近传感器奇怪的操作iOS

我正在开发一种应用,要求接近传感器在执行期间始终处于活动状态

我把这段代码放在app委托中:

[UIApplication sharedApplication].idleTimerDisabled = YES;

[UIDevice currentDevice].proximityMonitoringEnabled = YES;

问题是即使传感器被覆盖,在短时间后,显示器也会亮起.

我尝试使用使用传感器的第三方应用程序,显示屏仍然很暗.

有谁知道如何修理它?谢谢

iphone objective-c ios proximitysensor

6
推荐指数
0
解决办法
291
查看次数

如何获得Android接近传感器的当前价值?

是否有可能在Android中获得接近传感器的当前值?

我知道我可以使用SensorManager和Sensor并注册状态更改的侦听器,但我不需要收到每个状态更改的通知,因此这个代码在服务中运行会非常低效.此外,我的代码在状态发生变化之前不知道该值(如果值没有改变怎么办?如何知道它是什么?相反,我只想说:而不是注册一个监听器,我只想说:

proximitySensor.getCurrentDistance();
Run Code Online (Sandbox Code Playgroud)

这可能吗?

谢谢

android android-sensors sensormanager proximitysensor android-developer-api

6
推荐指数
1
解决办法
3335
查看次数

UnregisterListener不适用于PROXIMITY_SCREEN_OFF_WAKE_LOCK

我有这个代码

public class MainActivity extends AppCompatActivity implements SensorEventListener {

    private SensorManager mSensorManager;
    private Sensor mProximity;
    private PowerManager mPowerManager;
    private PowerManager.WakeLock mWakeLock;


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


        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

        mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            if (event.values[0] == 0) {
                //near
                Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
                turnOffScreen(); …
Run Code Online (Sandbox Code Playgroud)

android listener proximitysensor

6
推荐指数
1
解决办法
1258
查看次数