basedexclassloader classnotfoundexception

Android

basedexclassloader classnotfoundexception

開発中のAndroidアプリが、上記のエラーが出てスタートできなくなってしまいました。。。

Build PathにてAndroid Private Libraryを手動で追加するとなおる、という情報があります。
http://kokufu.blogspot.jp/2013/05/eclipse-adt-ver-22-class-not-found.html

これでなおる時もあるかと思いますが、私の場合は利用していないAdmobを実装するためのリスナー

 AdListener

をimplementsしていたために、このエラーが起きていました。

Adlistenerの利用を止めたらちゃんと実行できるようになりました。

ちなみに、Admobに関する試行錯誤はこちら↓
The constructor AdRequest() is not visible

cms

cmsとは

コンテンツマネージメントシステムの略です。

コンテンツマネジメントシステム(英: Content Management System, CMS)は、Webコンテンツを構成するテキストや画像などのデジタルコンテンツを統合・体系的に管理し、配信など必要な処理を行うシステムの総称。2005年頃より一般的に普及したといわれる。コンテンツ管理システムとも呼ばれる。

詳しくはWikipediaで。

failed to run command ic_plusone_tall_off_client.png

Android

failed to run command ic_plusone_tall_off_client.png

Android StudioでAndroidのプロジェクトをRunする時に、このエラーが出てビルドできませんでした。
Google Play Serviceライブラリの問題かな?とか思っていたら、これはWindowsで長すぎるファイルパスを解決できないための問題みたいですね。
260文字までらしいです。

http://stackoverflow.com/questions/18556280/android-studio-unable-to-open-png-file

ディレクトリの名前を短くしたら、解決しました。

iOS5での顔検証

iPhone

iOS 5 になって CIDetector というクラスを使って画像の顔認識ができるようになりました。
ということで、顔の上にUIViewを表示してみよう!

まず、をインポートします。

※注意として、CoreImageは左下の座標が(0,0)になります。(通常UIKitは、左上が(0,0))

 CIImage* image = [CIImage imageWithCGImage:【顔の写った写真を表示するUIImageView】.image.CGImage];

※精度がhighの顔認識(CIDetectorTypeFace)を生成

 CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:[NSDictionary dictionaryWithObject:
 CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];

※認識された顔のパーツを配列に入れます
 NSArray* features = [detector featuresInImage:image];

※CoreImageは、左下の座標が (0,0) となるので、顔認証された画像を描画する前に、
UIKitと同じ座標関係にしましょう!
この時、そのまま逆さまにしただけだと、他のオブジェクトも逆さまになってしまうので、
わけがわからなくなる!

 CGAffineTransform transform = CGAffineTransformMakeScale(1, -1);
 transform = CGAffineTransformTranslate(transform, 0, -facePicture.bounds.size.height);

※この処理を顔の各パーツごとに繰り返します。
 CIFaceFeature は目、鼻、口が検出されたかをBOOlで返してくれ、
それぞれのサイズも教えてくれるので便利です!
 今回は顔全体と鼻だけを例にとります。

for(CIFaceFeature* faceFeature in features)
{
※顔のRectを取得し、UIKitの座標に合わせます
 const CGRect faceRect = CGRectApplyAffineTransform(faceFeature.bounds, transform);

※顔と同じ大きさのUIViewを生成します
 UIView* faceView = [[UIView alloc] initWithFrame:faceRect];
 faceView.layer.borderWidth = 1;
 faceView.layer.borderColor = [[UIColor yellowColor] CGColor];
 faceWidth = faceFeature.bounds.size.width;

※これで顔の周りにボーダーを表示され、顔が認証されたとわかります!

 [facePicture addSubview:faceView];

 

※口が検出されてたら・・・の処理
if(faceFeature.hasMouthPosition)
{
※口の座標をゲットして、UIKitの座標に変換!
 const CGPoint mouthPos = CGPointApplyAffineTransform(faceFeature.mouthPosition, transform);

※顔の大きさに応じて口の上に表示するUIViewの大きさを変えよう!

 UIView* mouth = [[UIView alloc] initWithFrame : CGRectMake(mouthPos.x – faceWidth*MOUTH_SIZE_RATE*0.5,
mouthPos.y – faceWidth*MOUTH_SIZE_RATE*0.5,
faceWidth*MOUTH_SIZE_RATE,
faceWidth*MOUTH_SIZE_RATE)];

 mouthPoint = CGPointMake(mouthPos.x – faceWidth*MOUTH_SIZE_RATE*0.5, mouthPos.y – faceWidth*MOUTH_SIZE_RATE*0.5);

 UIColor* pink = [UIColor colorWithRed:1 green: 0.6 blue:0.8 alpha:1];

 mouth.backgroundColor = [pink colorWithAlphaComponent:0.3];
 mouth.layer.cornerRadius = faceWidth*MOUTH_SIZE_RATE*0.5;

 [facePicture addSubview:mouth];

 }
}

これで、顔の周りにボーダー、口にピンクのUIViewが表示されるかと思います!
簡単に顔を認証できます!

iOS7にするとナビゲーションバーに下のビューが被ってしまう!

iPhone

iPhoneアプリ開発者の方は、iOS7にして作ったアプリを確認してみたら・・・

なんとナビゲーションバーの下にビューがかぶってしまっているのです。
iOS6までなら、ビューのy軸0はナビゲーションバーの下から始まっていたのですが・・・。
でもご安心ください。
以下のコードを書けば、あなたも安心です。

 float systemVersion = [UIDevice currentDevice] systemVersionfloatValue];
 if (systemVersion >= 7.0)
 {
     navigationBar.translucent = NO;
 }

これをviewDidLoad内のトップに書いてあげれば、ナビゲーションバーの下からちゃんとビューが表示されます!

これで、iOS7でもiOS6でもナビゲーションバーの下からビューが表示されます!