RSS
0

iPhone:本体のシェイクをmotionEndedとUIEventSubtypeMotionShakeで検出する

iPhoneのシェイク判定をOS 3.0で実装されたmotionEndedを使って検出する(細かいシェイク分けをしたいときは,加速度センサを読むんだろうけど,単純な処理ならばmotionEndedで事足りる).処理の大まかな流れは,シェイクを検出して,その状態を通知する.そして,通知を拾って処理をする.ドキュメントを参考にして書いたので,最適ではないかもしれません.最適な方法をご存知の方は,ご教授ください.

ブログでは見にくいので,サンプルコードを用意しました.興味ある人は,ココからどうぞ.使用条件は自己責任です.このサンプルをアプリに参考・組込する/した方は可能ならばそのアプリを教えてください.Sample code is here for notification of iPhone shaking by motionEnded. This license is "your own risk" and "please teach me your applications".

1. UIWindow(例ばMyWindow)を作る.hファイルは触らずに,mファイルにmotionEndedメソッドを書いて,Notificationの準備(通知名はshakeをしました)をする.なぜかUIViewControllerにコレを書くと動かない.誰か教えてください.
@implementation MyWindow
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake )
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"shake" object:self];
}
}
@end

2. 自作のUIWindowを組み込む.テンプレートから作ってる人は,*AppDelegateのファイルを書き換える.xibも忘れずに.

3. UIViewControllerで通知を拾う処理を描く.
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(actionByShake) name:@"shake" object:nil];
}

-(void)actionByShake
{
NSLog(@"Your code when shaking");
}
Read more
0

後期高齢者制度と民主党

廃止のはずの「後期高齢者」当面維持…長妻厚労相
長妻厚生労働相は3日、民主党が先の衆院選の政権公約(マニフェスト)で掲げた現在の後期高齢者医療制度の廃止問題について、もとの老人保健制度(老健)は復活させず、新制度を創設するとともに、来年度中の現行制度の廃止は断念する方針を固めた。
去年の小沢問題が発覚したときだったな,民主党って自分たちで反対案だしながら,審議に出なかったんじゃん.本当は反対したくないけど,当時の野党としてのパフォーマンスとしてやってたのか.とりあえず,役人からのリークをそのまま読んでた素人を大臣にするのは止めてくださいよ.反官僚だとリークも貰えないだろうに.天下りを規制してない自治労組からは良いリークが貰えるとは思えんな.

脱官僚で政治家主導らしいが,あんまり上手く動いていない感じがする.臨機国会って開かれてないよね!?.エキスパートではない素人が国レベルの問題を解決できるとは思えんよ.本気でやるんなら,議員立候補認定試験とか作って,学と良識がある人間だけを議員に選抜してほしい.脱税総理やキャバクラ・反日大臣とかで国は回らんよ.
Read more
0

ARっていうが

今,ARが話題になってるけど,なんか今のARは偽物って感じがして仕方ない.位置情報ベースなんて,ただの手抜きにしか思えてしかたない.画像知識ベースのマーカー(できれはマーカーレス)のARをしようぜ,みんな.
Read more
0

iPhoneのシャッター音,非公開APIってやつか!?

(前エントリーの続き)

だったら,シャッター音を消して連射すればええんじゃないの!?っということで,調べた.

・・・,

無理.システム音のコントロールにアクセスできないんだと(公式ドキュメントから).
How do I access the hardware volume controller?

Global system volume, including your application's volume, is handled by iPhone OS and is not accessible by applications.
他で検索しても,シャッター音に関する記述が見つからないし,システム音のミュートも見つからない.消音の連射アプリがリリースされているのに,何も出てこないわ.これが非公開APIっていうやつか!

===追記===
OS3.0で追加されたMedia Playerの音量調節を噛ましてみたけど,やっぱりシャッター音だけはそのままだった.本当に,どうやってんの.直接,ファイルにアクセスしてリネームとかじゃないよね?!
Read more
3

iPhone:アプリ内でViewのスクリーンショットを取る

OS 3.1のcameraOverlayViewで大学時代に研究した時系列処理を実装してやんよっと意気揚々に始めたけど,カメラからの画像列はシャッターボタンを押すか,takePictureでシャッターボタンを呼び出さない限り取得できないということ.逐次,カシャカシャッと音を鳴らす訳にもいかず,挫折.動画撮影も同じでリアルタイムは無理だって.3.1ならできると思っていたのにー,わーわー.

半日を潰してしまったけど,調べてる最中に,アプリ内でUIViewのスクリーンショットを取るという他に転用できようなtipsを発見した.そのメモを以下に,ちなみにこのコードを一部書き換えてカメラのUIImagePickerControllerに対して行うと,真っ黒な画像が保存されるという,親切機能がOSに実装されている.意味わかんねーー
CGRect screenRef = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRef.size);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blueColor] set];
CGContextFillRect(ctx, screenRef);

[self.view.layer renderInContext:ctx];

UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);

UIGraphicsEndImageContext();
昔,UIGetScreenImage()なるメソッドで簡単に取得できたみたいだけど,今はこれはなぜかオミットされています.The 大人の事情.

続きのエントリです.
Read more
0

iPhone:画像をライブラリに保存するメソッドUIImageWriteToSavedPhotosAlbumの注意事項

画像(UIImage)を自分の画像ライブラリに保存するメソッドUIImageWriteToSavedPhotosAlbumを使用する場合には,注意が必要.保存が非同期処理で行われるので,呼び出し後すぐにアプリを終了すると画像は保存されない.これを防ぐためには,引数に保存完了を知らせるメソッドを与えればよい.
// 完了を知らせるメソッド
- (void) savingImageIsFinished:(UIImage *)_image
didFinishSavingWithError:(NSError *)_error
contextInfo:(void *)_contextInfo
{
NSLog(@"finished"); //仮にコンソールに表示する
}

// 保存処理を持つメソッド
-(void) hogehoge
{
...略...
// savedImageをライブラリに保存する
UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:), nil);
...略...
}

これで小一時間ほど悩んでましたが,公式ドキュメントに思いっきり書いてありました.始めからよく読んでおけばよかった.
The use of the completionTarget, completionSelector, and contextInfo parameters is optional and necessary only if you want to be notified asynchronously when the function finishes writing the image to the user’s Saved Photos album. If you do not want to be notified, pass nil for these parameters.
Read more
0

感謝!「勝手に観光図」がランクイン


自作の「勝手に観光図」が,私が確認した限りApp Storeのナビゲーション(有料アプリ)で最高27位(今は31位)にランクインしていました.ありがとうございます!!
Read more