特定のアクションのバイブレーションを有効/無効にする設定がいくつかありますが、デバイスにバイブレーション機能がない場合は、それらを表示しても意味がありません。iPod touchを使用しているかどうか、振動しているかどうかを確認する方法はありますか?
1694 次
2 に答える
5
おそらく優れたアプローチではないモデルチェックを行う以外に、これを行う方法があるかどうかはわかりません。私はアップルが提供することを知っています:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
デバイスが振動できる場合は、振動します。振動のないデバイスでは、何もしません。別の呼び出しがあります:
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
これは、機能をハッシュするか、デバイスがビープ音を鳴らす場合にデバイスを振動させます。
ユーザーが振動デバイスを持っていないときにビープ音を鳴らしたい場合があるため、設定だけを行い、設定に関する説明を行う方がよい場合があります。「振動アラートのオン/オフ」以外の設定を呼び出すことができます。
于 2011-08-14T03:01:46.187 に答える
3
このコードはそれを行う必要があります-iPhoneが振動機能を備えた唯一のデバイスであると「想定」していることに注意してください。とりあえずどっち…
- (NSString *)machine
{
static NSString *machine = nil;
// we keep name around (its like 10 bytes....) forever to stop lots of little mallocs;
if(machine == nil)
{
char * name = nil;
size_t size;
// Set 'oldp' parameter to NULL to get the size of the data
// returned so we can allocate appropriate amount of space
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
// Allocate the space to store name
name = malloc(size);
// Get the platform name
sysctlbyname("hw.machine", name, &size, NULL, 0);
// Place name into a string
machine = [[NSString stringWithUTF8String:name] retain];
// Done with this
free(name);
}
return machine;
}
-(BOOL)hasVibration
{
NSString * machine = [self machine];
if([[machine uppercaseString] rangeOfString:@"IPHONE"].location != NSNotFound)
{
return YES;
}
return NO;
}
マシン呼び出しが呼び出されるたびに多くの小さな malloc を実行しないように編集しただけです。
于 2011-08-14T15:59:48.163 に答える