【iPhoneアプリ】UIDeviceクラスを利用した端末情報、バッテリ情報、画面の向きを取得する方法


タイトルとおりです。
UIDeviceクラスを利用してiPhoneやiPadのデバイス情報を取得することができます。
デバイスの現在の向きや、バッテリー情報、OSのバージョンなどを調べる時に使います(^ω^)



UIDeviceクラスを利用して取得できる端末情報


プロパティ名前
nameデバイスの名前 ( 設定 > 一般 > 情報 > 名前 で設定したもの)
modelデバイスのモデル(iPhone,iPad,iPodtouthなど)
localizeModelローカルバージョン
systemNameOS名
systemVersionOSのバージョン

以下のようにUIDeviceクラスのcurrentDeviceメソッドでシングルトンのインスタンスを取得、
プロパティを参照すればOKです。

    UIDevice *dev = [UIDevicecurrentDevice];
    NSLog(@"name %@"      , dev.name  );
    NSLog(@"model %@"    , dev.model );
    NSLog(@"systemName %@", dev.systemName );



バッテリー情報を取得する


バッテリー情報も先ほどと同じように参照して取得できますが、
取得剃る前にbatteryMonitoringEnabledプロパティをYESにして有効にする必要があるので注意。

・バッテリー関連のプロパティ
プロパティ名前
batteryLevelバッテリー残量(0.0~1.0)
batteryStateバッテリー状態
batteryMonitoringEnabledバッテリ状態有効フラグ

二番目のバッテリー状態は以下の様な定数のどれかが返ってきます。

・バッテリー状態の定数
定数名説明
UIDeviceBatteryStateUnknown不明
UIDeviceBatteryStateUnplugged充電していない
stringByAppendingFormat充電中
UIDeviceBatteryStateFull充電中で満タン

・使用例
    UIDevice *dev = [UIDevicecurrentDevice];
    dev.batteryMonitoringEnabled = YES;
    NSLog(@"batteryLevel -%f"      , dev.batteryLevel  );
    if( UIDeviceBatteryStateUnknown == dev.batteryState ){
        NSLog(@"不明");
    }elseif( UIDeviceBatteryStateUnplugged == dev.batteryState ){
        NSLog(@"充電していない");
    }elseif( UIDeviceBatteryStateCharging == dev.batteryState ){
        NSLog(@"充電なう");
    }elseif( UIDeviceBatteryStateFull == dev.batteryState ){
        NSLog(@"満タン!");
    }



現在のデバイスの向きを調べる


デバイスの現在の向きを調べるにはorientationプロパティを調べます。
以下の定数のどれかを返します。

・デバイスの向き
定数名説明
UIDeviceOrientationUnknown不明
UIDeviceOrientationPortrait普通の向き
UIDeviceOrientationPortraitUpsideDown逆さま
UIDeviceOrientationLandscapeLeft横向き(左側が下)
UIDeviceOrientationLandscapeRight横向き(右側が下)

ここで注意が必要です。
ViewControllerのライフサイクル内のViewが作られる前(viewDidLoadやviewWillAppear)でこの値を取得すると、不明(UIDeviceOrientationUnknown)と返ってきてしまいます。
ビューが作られた後のviewDidAppearの中で取得すればうまく画面の向きが取得できるみたいです。

もしくは、画面が向きが切り替わる時に呼ばれるshouldAutorotateメソッドの中でも取得ができます。
(以前紹介した記事参照)
・【iPhoneアプリ】iOS6では画面の向きが変わった時に呼ばれる関数が違う

サンプルプログラム


上記のまとめです。

・ストーリーボード使用。
・ARC使用

GitHubにもアップしてあります。
github.com/ouka-tenshi/DeviceInfoSample

・ViewController.h
#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@property (nonatomic, retain)UILabel *output;
@end




・ViewController.m

#import "ViewController.h"

@interfaceViewController ()

@end

@implementation ViewController
@synthesize output;

- (void)viewDidLoad
{
    [superviewDidLoad];

    output = [[UILabelalloc]initWithFrame:CGRectMake(10.0, 10.0, self.view.frame.size.height, self.view.frame.size.width)];
    output.numberOfLines = 20;
    output.textColor = [UIColorblackColor];
    output.font      = [UIFontfontWithName:@"AppleGothic"size:16];
    output.textAlignment = UITextAlignmentLeft;
    
    NSString *str = @"[端末の名称/OSの情報など]\r\n";
    UIDevice *dev = [UIDevicecurrentDevice];
    
    str = [str stringByAppendingFormat:@"name -%@\r\n" , dev.name ];
    str = [str stringByAppendingFormat:@"model -%@\r\n", dev.model ];
    str = [str stringByAppendingFormat:@"localizedModel -%@\r\n" , dev.localizedModel ];
    str = [str stringByAppendingFormat:@"systemName -%@\r\n", dev.systemName ];
    str = [str stringByAppendingFormat:@"systemVersion -%@\r\n", dev.systemVersion ];
    
    str = [str stringByAppendingFormat:@"[バッテリーの情報]\r\n"];
    dev.batteryMonitoringEnabled = YES;
    str = [str stringByAppendingFormat:@"batteryLevel -%f\r\n", dev.batteryLevel ];
    if( UIDeviceBatteryStateUnknown == dev.batteryState ){
        str = [str stringByAppendingFormat:@"batteryLevel 不明\r\n" ];
    }elseif( UIDeviceBatteryStateUnplugged == dev.batteryState ){
        str = [str stringByAppendingFormat:@"batteryLevel 充電してない\r\n" ];
    }elseif( UIDeviceBatteryStateCharging == dev.batteryState ){
        str = [str stringByAppendingFormat:@"batteryLevel 充電なう\r\n" ];
    }elseif( UIDeviceBatteryStateFull == dev.batteryState ){
        str = [str stringByAppendingFormat:@"batteryLevel フル充電\r\n" ];
    }
    output.text = str;
   [self.viewaddSubview:output];
}
-(void)viewDidAppear:(BOOL)animated{
    UIDevice *dev = [UIDevicecurrentDevice];
    NSString *str = output.text;
    str = [str stringByAppendingFormat:@"[端末の向き]\r\n"];
    if( UIDeviceOrientationPortrait ==  [dev orientation]){
        str = [str stringByAppendingFormat:@"Portrait\r\n"];
    }elseif( UIDeviceOrientationPortraitUpsideDown ==  [dev orientation] ){
        str = [str stringByAppendingFormat:@"PortraitUpsideDown\r\n"];
    }elseif( UIDeviceOrientationLandscapeLeft  ==  [dev orientation] ||
             UIDeviceOrientationLandscapeRight  == [dev orientation] ){
        str = [str stringByAppendingFormat:@"Landscape\r\n"];
    }
    output.text = str;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)viewDidUnload {
    [self setOutput:nil];
    [super viewDidUnload];
}

@end




【実行結果】
【iPhoneアプリ】UIDeviceクラスを利用した端末情報、バッテリ情報、画面の向きを取得する方法:サンプル2

【iPhoneアプリ】UIDeviceクラスを利用した端末情報、バッテリ情報、画面の向きを取得する方法:サンプル1


関連記事

コメントは受け付けていません。