Я хочу найти устройство бездействия через программу. то есть найти состояние, когда устройство не перемещено или не перемещено. Я пробовал следующие API-интерфейсы акселерометра и ядра. Но я не мог понять состояние простоя устройства из значений, которые он дает.Поиск состояния незанятого устройства iOS
Любые предложения будут оценены.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
currentMaxAccelX = 0;
currentMaxAccelY = 0;
currentMaxAccelZ = 0;
currentMaxRotX = 0;
currentMaxRotY = 0;
currentMaxRotZ = 0;
value = 0;
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = .2;
self.motionManager.gyroUpdateInterval = .2;
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self outputAccelertionData:accelerometerData.acceleration];
if(error){
NSLog(@"%@", error);
}
}];
[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMGyroData *gyroData, NSError *error) {
[self outputRotationData:gyroData.rotationRate];
}];
}
-(void)outputAccelertionData:(CMAcceleration)acceleration
{
self.accX.text = [NSString stringWithFormat:@"accX: %.2fg",acceleration.x];
if(fabs(acceleration.x) > fabs(currentMaxAccelX))
{
currentMaxAccelX = acceleration.x;
}
self.accY.text = [NSString stringWithFormat:@"accY: %.2fg",acceleration.y];
if(fabs(acceleration.y) > fabs(currentMaxAccelY))
{
currentMaxAccelY = acceleration.y;
}
if (fabs(acceleration.y) - fabs(value) > 0.2 || fabs(value) - fabs(acceleration.y) > 0.2)
{
NSLog(@"Not idle");
}
value = acceleration.y;
self.accZ.text = [NSString stringWithFormat:@"accZ: %.2fg",acceleration.z];
if(fabs(acceleration.z) > fabs(currentMaxAccelZ))
{
currentMaxAccelZ = acceleration.z;
}
self.maxAccX.text = [NSString stringWithFormat:@"maxAccX: %.2f",currentMaxAccelX];
self.maxAccY.text = [NSString stringWithFormat:@"maxAccY: %.2f",currentMaxAccelY];
self.maxAccZ.text = [NSString stringWithFormat:@"maxAccZ: %.2f",currentMaxAccelZ];
}
-(void)outputRotationData:(CMRotationRate)rotation
{
self.rotX.text = [NSString stringWithFormat:@"rotX: %.2fr/s",rotation.x];
if(fabs(rotation.x) > fabs(currentMaxRotX))
{
currentMaxRotX = rotation.x;
}
self.rotY.text = [NSString stringWithFormat:@"rotY: %.2fr/s",rotation.y];
if(fabs(rotation.y) > fabs(currentMaxRotY))
{
currentMaxRotY = rotation.y;
}
self.rotZ.text = [NSString stringWithFormat:@"rotZ: %.2fr/s",rotation.z];
if(fabs(rotation.z) > fabs(currentMaxRotZ))
{
currentMaxRotZ = rotation.z;
}
self.maxRotX.text = [NSString stringWithFormat:@"maxRotX: %.2f",currentMaxRotX];
self.maxRotY.text = [NSString stringWithFormat:@"maxRotY: %.2f",currentMaxRotY];
self.maxRotZ.text = [NSString stringWithFormat:@"maxRotZ: %.2f",currentMaxRotZ];
}
«Я не мог понять состояние простоя устройства из значений, которые он дает». Какие ценности он дает? – matt
Можете ли вы подсказать, подходит ли то, что я пытаюсь, или нет? Можете ли вы предложить какой-то способ найти время простоя устройства на устройстве iOS? – Stella
Если на холостом ходу вы имеете в виду _не перемещать _... пожалуйста, измените текст вопроса, чтобы использовать слово ** стационарное ** _ вместо пустого _.... для телефона (или вообще электронных устройств) состояние бездействия относится к отсутствующим программам (или вообще нет цифровой активности) и т. д. – lukya