5

特定のアクションのバイブレーションを有効/無効にする設定がいくつかありますが、デバイスにバイブレーション機能がない場合は、それらを表示しても意味がありません。iPod touchを使用しているかどうか、振動しているかどうかを確認する方法はありますか?

4

2 に答える 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 に答える