検索
カテゴリツリー
トップ
  未整理
  iPhoneアプリ開発
      未整理
      画像処理
リンク

CD&DVD Press
プレスやってます!


TECHLOG
アプリ終了時にタスクを残さないようにする
iOS4.0から、アプリをホームボタンで終了させてもタスクが終了せず、
次回起動すると、前回の状態から復帰する。

デバッグ中などは「タスクの終了」をxcode上で選択しないと
終了しないため、ちょっと面倒くさい。

これを解除するには、plistに、"UIApplicationExitsOnSuspend=YES"を追記すればよい。
YESの場合は、ホームボタン押下と同時にタスクが終了する。

xcode上ではplistのエディタ上で「+」ボタンを押して、
「Application does not run in background」を選択すると、
UIApplicationExitsOnSuspend の設定となる。

posted by admin at 2010年11月01日

音楽の再生
BGMの再生を再生するのは、AVFoundationを使います。
#include <AVFoundation/AVFoundation.h>

BGMのロード
AVAudioPlayer* mBgm;
NSString* bgmpath = [ [NSBundle mainBundle]
            pathForResource:@"bgm1" ofType:@"mp3"];
NSURL* url = [NSURL fileURLWithPath:bgmpath];
mBgm = [ [AVAudioPlayer alloc]
              initWithContentsOfURL:url error:nil];
mBgm.numberOfLoops = -1;

再生と停止
[mBgm play];
~~
[mBgm stop];

停止したものをもう一回、先頭から再生するには、 currentTimeで再生位置を戻してからplayする。
mBgm.currentTime = 0.0f; // 再生位置の指定
[mBgm play];

ループ回数は、 numberOfLoopsで指定する。
注意すべきは、-1指定で無限ループとなるが、
回数を指定する場合は、0~でなく、1~の指定であるってとこ。
// 無限ループの指定
mBgm.numberOfLoops = -1;
// 1回ループの指定
mBgm.numberOfLoops = 0;
// 2回ループの指定
mBgm.numberOfLoops = 1;

posted by admin at 2010年10月28日

効果音の再生
30秒以内(3Gは5秒)の音声を再生する場合は、「AudioToolbox.framework」を使用する。
#include <AudioToolbox/AudioToolbox.h>

ファイルから音声の読み込み。
シミュレータではmp3でもよいが、実機ではwavでないといかん。
SystemSoundID mSound = 0;
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundUrl = CFBundleCopyResourceURL(
       mainBundle, CFSTR("se1"), CFSTR("wav"), NULL );
AudioServicesCreateSystemSoundID( soundURL, &mSound );

再生する。
AudioServicesPlaySystemSound( mSound );

CFSTR()というのは、CFStringRef型となる。
NSStringから変換する場合は、
NSString* name = @"abc";
CFStringRef cfstr_name = CFStringCreateWithCString(
	kCFAllocatorDefault, [name UTF8String],
	kCFStringEncodingUTF8 );

とする。
再生の終了をキャッチしたい場合は、
//	コールバック登録
AudioServicesAddSystemSoundCompletion(
	sound_id, NULL, NULL, SoundPlayEndedCallback, (void*)soundUrl );

としておき、コールバックを↓のようにする
(スタティックなとこに注意)
static void SoundPlayEndedCallback(
	SystemSoundID sound_id,
	void* myURLRef
){
	//	一度しか使わない音声なら、ここで破棄する
	AudioServicesDisposeSystemSoundID( sound_id );
	CFRelease( myURLRef );
}

音声を一時停止するような命令はないっぽいが、
CFRunLoopStop( CFRunLoopGetCurrent() );

とすれば、一応強制終了できる。
posted by admin at 2010年10月28日

safariでURLを開く
safariを使用して、URLを開くには、
[ [UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://test.php"] ];

と記述する。
posted by admin at 2010年10月28日

C++の記述
xcode上での開発は、C++/C/Object-Cの混在が可能(*.h、*.c、*.cpp、*.m、*.mm)

普通にcppファイルを追加しただけではエラーとなる。
追加した *.cpp のヘッダ(*.h ファイル)を、
プロジェクトツリー上で右クリックして情報を見ると
ファイルタイプが「sourcecode.c.h」になっているので、「sourcecode.cpp.h」に変更する。

また、それらの*.hファイルをimportする*.mファイルも同様に、
ファイルタイプを「sourcecode.cpp.objcpp」に変更すればよい。
posted by admin at 2010年10月28日

ナビゲーションコントローラベースの、アプリ作成
ナビゲーションコントローラをベースに画面遷移を行うアプリを作成する場合の、初期手順です。


1.新規プロジェクトで「Window-based Application」を選択。



2.AppDelegateに、Navigation用のインタフェースを作成する。

xxxxAppDelegate.h に以下の修正を加える。

@interface xxxxAppDelegate : NSObject {
	IBOutlet UIWindow* window;
	IBOutlet UINavigationController* navigation; // 追加
}
@property (nonatomic, retain) IBOutlet UIWindow* window;
@property (nonatomic, retain) IBOutlet UINavigationController* navigation; // 追加


xxxxAppDelegate.m に以下の修正を加える。

・ソースの先頭に、synthesize を追加
@synthesize widnow;
@synthesize navigation; // 追加


・Navigationのviewをwindowに追加
-(void) applicationDidFinishLaunching:(UIApplication*)application {
	[window addSubview:navigation.view]; // 追加
	[window makeKeyAndVisible];
}


・解放処理部分
-(void)dealloc {
	[navigation release]; // 追加
	[window release];
	[super dealloc];
}



3.Navigationに、最初に表示されるviewを作成する。

プロジェクトツリーの「Classes」を右クリック →「追加」→ 「新規ファイル」→「UIViewController subclass」を選択。
名前は何でもいいので、とりあえず「RootScene」として作成すると、「RootScene.h」、「RoutScene.m」、「RoutScene.xib」の3ファイルが作られる。



RoutScene.m に以下の関数を追加しておく。
-(id) init {
	return( self );
}


4.InterfaceBuilderでの修正。

MainWindow.xib をダブルクリックしてInterfaceBuilderを起動する。

Libraryウィンドウから「Navigation Controller」を、
Windowと同じ階層にドラッグドロップで追加する。
(Libraryウィンドウが表示されていない場合は、メインメニューの「Tools」→「Library」で表示できる)



「Navigation Controller」をクリックして選択する。
インスペクタ上で、次の作業を行う。
(インスペクタが表示されていない場合は、メインメニューの「Tools」→「Inspector」で表示できる)

① 「Outlets」の右端にある○ボタンを、一覧画面の「xxxxAppDelegate」の上にドラッグ&ドロップする。
② 「Referencing Outlets」の、「New Referencing Outlet」の右端にある○ボタンを、一覧画面の「xxxxAppDelegate」の上にドラッグ&ドロップして「navigation」を選択する。



後のプログラムはxcodeで書くため、InterfaceBuilderでの操作はこの1回きりとなる。


ここまでで、ナビゲーションコントローラは動作するようになる。
ビルドして実行すると、何もない画面が表示されるはず。
posted by admin at 2010年10月27日

26件中、 21件目~ 26件目 を表示中
<前ページ>   <次ページ>