iPhoneの画面だけでなく、どこでも可能なタップを検出しようとしています。これは可能であることを示すlinkです。加速度計でiPhoneのどこでもハードタップを検出
基本的には、電話がポケットに入っている間にユーザーがiPhoneで3回タップするとアラートを送信します。 私が達成したのは、私は3つのタップを検出することができますが、私はまた、これらのケースでも誤ったアラートを取得します。 1)ユーザーの歩行、2)携帯電話の振り回し、3)走っている場合。ユーザーがiPhoneを3回叩いたかどうかを確認する必要があります。
ここに私のコードです。
- (void)accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration
{
if (handModeOn == NO)
{
if(pocketFlag == NO)
return;
}
float accelZ = 0.0;
float accelX = 0.0;
float accelY = 0.0;
accelX = (acceleration.x * kFilteringFactor) + (accelX * (1.0 - kFilteringFactor));
accelY = (acceleration.y * kFilteringFactor) + (accelY * (1.0 - kFilteringFactor));
accelZ = (acceleration.z * kFilteringFactor) + (accelZ * (1.0 - kFilteringFactor));
self.z.text = [NSString stringWithFormat:@"%0.1f", -accelZ];
if((-accelZ >= [senstivity floatValue] && timerFlag) || (-accelZ <= -[senstivity floatValue] && timerFlag)|| (-accelX >= [senstivity floatValue] && timerFlag) || (-accelX <= -[senstivity floatValue] && timerFlag) || (-accelY >= [senstivity floatValue] && timerFlag) || (-accelY <= -[senstivity floatValue] && timerFlag))
{
timerFlag = false;
addValueFlag = true;
timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(timerTick:) userInfo:nil repeats:YES];
}
if(addValueFlag)
{
if (self.xSwitch.on)
{
NSLog(@"X sWitch is on");
[self.accArray addObject:[NSNumber numberWithFloat:-accelX]];
}
if (self.ySwitch.on)
{
NSLog(@"Y Switch is on");
[self.accArray addObject:[NSNumber numberWithFloat:-accelY]];
}
if (self.zSwitch.on)
{
NSLog(@"Z Switch is on");
[self.accArray addObject:[NSNumber numberWithFloat:-accelZ]];
}
}
//}
}
- (void)timerTick:(NSTimer *)timer1
{
[timer1 invalidate];
addValueFlag = false;
int count = 0;
for(int i = 0; i < self.accArray.count; i++)
{
if(([[self.accArray objectAtIndex:i] floatValue] >= [senstivity floatValue]) || ([[self.accArray objectAtIndex:i] floatValue] <= -[senstivity floatValue]))
{
count++;
[self playAlarm:@"beep-1" FileType:@"mp3"];
}
if(count >= 3)
{
[self playAlarm:@"06_Alarm___Auto___Rapid_Beeping_1" FileType:@"caf"];
[self showAlert];
timerFlag = true;
[self.accArray removeAllObjects];
return;
}
}
[self.accArray removeAllObjects];
timerFlag = true;
}
ご協力いただきますようお願い申し上げます。
ありがとう
これはまさに私が探しているものです!あなたは解決策を見つけましたか? – Jonovono
@sajooこれまでこれまでの解決策を見つけましたか?これについて話したいですか?私のメールは私のプロフィールにあるはずです。がんばろう! – Jonovono
@Jonovonoはい、私はそれを達成しました。私は自分のシステムに戻ったときに私のソリューションを投稿しようとします。あなたが私と話をしたいのであれば、私のメールIDはここにあります。 [email protected]。 – sajjoo