我放下手机,看起来我的接近传感器不再可靠.它一直返回近处.问题是,在通话期间显示屏关闭,我将无法使用数字键盘输入别针或会议另一个电话,甚至断开呼叫.我在辅助功能设置中找到了电源按钮断开连接选项并立即使用它.
我试图创建一个应用程序,试图在收到一个电话时获得一个完整的唤醒锁,希望它能保持显示.
创建一个广播接收器,当电话状态变为OFFHOOK时调用服务
该服务获得一个完整的唤醒锁,只有当手机状态为IDLE时才会释放它.
但是,接近传感器会关闭显示屏.我使用isHeld()方法来确保获取锁.我使用了PowerManager的isScreenOn()方法,即使在通话期间屏幕关闭时它也返回true.我试图在一个循环中每两秒获取一次唤醒锁进行测试,但显示器仍然不会出现.
我正在使用Nexus 5 Android版本4.4.4
任何人都可以建议超越接近传感器的行为吗?根要求的选项也没关系.
谢谢!
android telephony telephonymanager proximitysensor android-dialer
我想在不关闭显示屏的情况下拦截接近传感器.
我从文档中知道我有两个Bool变量:
proximityMonitoringEnabled
proximityState
Run Code Online (Sandbox Code Playgroud)
和这段代码
[UIDevice currentDevice].proximityMonitoringEnabled = YES;
Run Code Online (Sandbox Code Playgroud)
当接近传感器检测到某些东西时,它会关闭显示屏,就像在打电话时将手机放在耳边一样.
覆盖接近传感器时如何保持显示屏开启?
启用接近传感器时,我无法让设备使用后视摄像头拍摄图像.我不希望相机预览显示,只是希望设备拍摄照片并将其显示在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) 这个问题并不完全是关于代码而是实现.
我正在开发一款需要检查手机是否放入口袋的应用程序.我有一个简单的算法来检测行走时的用户步骤.问题是手中的移动也可以注册为一个步骤,例如当用户运行应用程序并将步骤值从他/她执行此操作的时间归零到手机放在口袋中时,应用程序会注册几个步骤.
我的想法是检查接近传感器,看看手机是否放在口袋里.
我对加速计传感器的处理是我继续读取缓冲区中的加速度计值,当缓冲区满了,然后计算步数(计算时,缓冲区仍在接受新的加速度计读数).
因为我听说接近传感器是基于中断而不是基于轮询的(如acc传感器).我如何将这两者协调在一起?
如果我在将acc值写入缓冲区之前检查接近度是否安全,并在计算开始时再次检查它,如果接近度不是FAR模式,我可以假设手机放在口袋里?
欢迎任何建议!
经过一些谷歌搜索,我可以理解"接近传感器",当设备离开/靠近用户时,用于开/关屏幕.我观看了这段视频(从第30秒开始观看)并对这些很酷的东西感到惊讶.我想在我的应用程序中实现它.
然而,我想知道有没有公共API可用时,可以保护屏幕锁proximityMonitoringEnabled是YES.然后上面的应用程序如何做到这一点?
为了清楚地理解,我正在复制一些代码.
启用接近传感器:
[[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:方法中添加了一个视图并删除了.但是视图只在几秒钟内可见,并且屏幕熄灭.
我可以阻止屏幕自动关闭吗?
只是困惑!!
避免问题的具体方案:
三星设备中的活动行为与每次检测到更改时的行为不同,对于接近,它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
//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中,当我从上方悬停物体时,传感器(屏幕)未被检测到.任何想法伙计们?
我正在开发一种应用,要求接近传感器在执行期间始终处于活动状态
我把这段代码放在app委托中:
[UIApplication sharedApplication].idleTimerDisabled = YES;
[UIDevice currentDevice].proximityMonitoringEnabled = YES;
问题是即使传感器被覆盖,在短时间后,显示器也会亮起.
我尝试使用使用传感器的第三方应用程序,显示屏仍然很暗.
有谁知道如何修理它?谢谢
是否有可能在Android中获得接近传感器的当前值?
我知道我可以使用SensorManager和Sensor并注册状态更改的侦听器,但我不需要收到每个状态更改的通知,因此这个代码在服务中运行会非常低效.此外,我的代码在状态发生变化之前不知道该值(如果值没有改变怎么办?如何知道它是什么?相反,我只想说:而不是注册一个监听器,我只想说:
proximitySensor.getCurrentDistance();
Run Code Online (Sandbox Code Playgroud)
这可能吗?
谢谢
android android-sensors sensormanager proximitysensor android-developer-api
我有这个代码
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) proximitysensor ×10
android ×5
ios ×5
iphone ×3
proximity ×3
image ×1
listener ×1
monitoring ×1
objective-c ×1
screen ×1
swift ×1
telephony ×1
uidevice ×1
uiimageview ×1