カテゴリー別アーカイブ: Androidアンドロイド携帯アプリ

4,5 今日のエラー AndEngine google play 関連のエラー,Box2d のアプリがエミュレータでエラー、APIのバージョンを上げる|admobのライブラリの追加忘れ|onAreaTouched(),IOnAreaTouchListenerが動かない|box2d衝突判定ContactListener が正常に動かない|プロジェクト名、パッケイージ名の変更したいときは

_4.今日のエラーandroid,google play 関連のエラー

前回のエラー解消、メモ
グローバル変数設定エラー、This version of the rendering library is more recent than your version of ADT plug-in、バックグラウンドからの復帰でエラー、Cursor cursor=db.rawQuery(selectQuery, null)

android,google play 関連のエラー| apkをアップロードしようとしたら「zipalign が実行されていない APK をアップロードしました。APK で zipalign を実行し、もう一度アップロードする必要があります。」というエラー

eclipseからandroidアプリへのデジタル署名手順が必要らしい
1.”Android Tools” > “Export Signed Application Package…
を実行して、必要な情報を入力
2.指示に従って入力して、新しいAPKファイルを作成して、
3.アップロードして、
4.公開設定にすれば終わりです。
AM8:06

ただ、どのURLかいまわからない。
次のようになるそうです。

https://play.google.com/store/apps/details?id=com.example.application
https://play.google.com/store/apps/details?id=com.ドメイン.アプリ名

_5 今日のエラー AndEngine Box2d のアプリがエミュレータでエラー、APIのバージョンを上げる|admobのライブラリの追加忘れ|onAreaTouched(),IOnAreaTouchListenerが動かない|box2d衝突判定ContactListener が正常に動かない|プロジェクト名、パッケイージ名の変更したいときは

(1)box2dを使用してデバッグしようとするとエミュレータが “Emulator without GPU support detected”と表示してしまう

エミュレータでGPUを設定してもダメ。
PJ名は box2dtext
エミュレータは、API16 android 4.1.2ではエラー

実機でもエラーと思ったら、2回ダメで、その後、OK。一体何だったんだ。
でもエミュレータではエラーのまま。
API16 android 4.1.2ではエラー
>APIのバージョンを上げて API 18 android 4.3でOK

(2)プロジェクト名、パッケイージ名の変更したいときは

フォルダ名をfinderでコピーしておいてEclipseにインポートして、

マニフェストファイルを開いて変更したいcom.xxx.newnameにして
左側のsrcのところを右クリックしてRefactor > Renameにして、Upadate referencesとRename subpackagesをチェックします。

詳しくは以下のリンクを参考。
Eclipseのリファクタリング機能を活用する « Tech Booster
Androidのプロジェクト名・パッケージ名の変更 [Android] – phonybearの日記

(3)admobのライブラリの追加忘れ

アドモブの広告を追加しようとしたら、なかなかエラーが消えない。
よくよく考えたら、ADMOBのライブラリを追加していませんでした。

libs/GoogleAdMobAdsSdk-XXX.jarとなるように、GoogleAdMobAdsSdk-XXX.jarをコピーします。
私は手動で、コピペしました。
もし、すでに、教科書通りにGoogleAdMobAdsSdk-XXX.jarを挿入していたら、挿入済みを一旦削除してください。
すでに登録されているGoogleAdMobAdsSdk-XXX.jarがあるとエラーになります。

そして、activityj_main.xmlに
xmlns:ads=”http://schemas.android.com/apk/lib/com.google.ads”
を忘れずに。

(4)onAreaTouched(),IOnAreaTouchListenerが動かない

設定してもなぜか動かない、そして、アクションを起こしたいスプライトを正しくタップしているのに、ログにも出ない。
原因:該当のスプライトを登録していませんでした。
対応:registerTouchArea(sprite);として登録しました。

設定
setOnAreaTouchListener(MainScene.this);//dont forget

定義
boolean onAreaTouched

登録
registerTouchArea(sprite);

onAreaTouchedを使って、タップされたスプライトなどにアクションを与えたいとき、
設定して、定義してもどのスライトに対して、登録しないとコンパイルエラーや実行時のエラーがなくても正常に動作しません。
タッチ後のアクションを与えるのかがわからないからです。

これはonSceneTouchEvent(Scene, TouchEvent)と異なります。
onSceneTouchEventは、
設定
setOnSceneTouchListener(MainScene.this);
して、定義を書けば動きます。
この点が異なります。

(5)box2d衝突判定ContactListener が正常に動かない 

ContactListenerの記載自体は問題ありません。

問題だったのは、他のところで、衝突した際に、どのBODYかを判別するために
if (x2.getBody().getUserData().equals(“player”)として
bodyの登録情報を取得する際に、設定されていない場合に強制エラーとなるようです。
値が設定されていなければ、FALSEとなるのかと思いましたが、強制エラーでした。

そこで、
if (x1.getBody().getUserData()!=null && x1.getBody().getUserData().equals(“player”) )
として、nullチェックを入れるようです。
これで、強制的なエラーはなくなりました。

また、x1,x2のどちらに該当のBODYが入るかはわからないので、両方判定を入れた変えてOR
判定を入れます。最初は、どちらか一方にBODYーAにX1が入っていれば、残りの方にBODY-BにX2が入って相互に判定してくれると思っていましたが、そうではなくて、BODY-AにX2、BODY-BにX1という場合は、判定できないようでした。
つまり、どちらに入るかはきちんと判定できるようにしなくてはいけないようです。
結果として以下のようになりました。
woodRectangleは、Rectangleで接触したら赤色に変化するようにして、衝突判定を視覚的にわかるようにしたものです。

[c]
@Override
public void beginContact(Contact contact)
{
final Fixture x1 = contact.getFixtureA();
final Fixture x2 = contact.getFixtureB();
if (x1.getBody().getUserData()!=null && x2.getBody().getUserData()!=null ){
if ( x1.getBody().getUserData().equals("hi") && x2.getBody().getUserData().equals("another") ||
x1.getBody().getUserData().equals("another") && x2.getBody().getUserData().equals("hi")
){
Log.d("contact", "contact_hi");
woodRectangle.setColor(1.0f, 0.0f, 0.0f);
}

}
}
[/c]

(1)cocos2d for iPhoneからandEngine for androidへの移植(たぶん)過程メモ,box2d

(1)cocos2d for iPhoneからandEngine for androidへの移植(たぶん)過程メモ,box2d

過去の移植記事 

cocos2d for iPhone をcocos2d-xに移植する過程の記録メモまとめ、Androidクロスプラットフォーム化へ 、(1)〜(6)分

andEngineを選んだ理由

アイフォンでゲームを開発するなら、cocos2d for iPhone、cocos2d-x、unityが有名です。他にもフレームワークはあると思いますが私は知りません。
cocos2d for iPhoneはobjective-c、cocos2d-xはc++でどちらもXCODEです。unityは3Dオブジェクトモデル主体で、c#, javascriptを使用し、ビジュアル的にオブジェクトを配置します。その配置したオブジェクトに対して命令、処理を与えるわけです。unityはどことなくAdobe Flashに似ています。比較的操作しやすい環境です。

 cocos2d for iPhone、cocos2d-xに関する記事はこちら

 Unityに関する記事はこちら

 Blenderに関する記事はこちら

クロスプラットフォーム対応としてcocos2d-xかUnityで開発し、ひとつのコードでアイフォンとアンドロイド向けスマートフォンに対応することができます。
 cocos2d-xとUnityはほぼクロスプラットフォームに対応しているので、アイフォンとアンドロイド用のアプリを生成できます。
多少の調整は必要となるかもしれませんが。

 アンドロイド向けアプリ開発のフレームワークとしてandEngineがあります。他にもあるようですが、日本語のサイトをあまり見かけませんので、andEngine が主流なのかと思っています。
coronaSDK(Lua言語)というのもありました。無料から会社の規模に応じて料金を支払うようです。言語がちょっと特殊なので今回は除外です。

私の場合今回は、andEngineを使用することにしました。
 理由は、前回のアプリ開発がアンドロイドアプリだったので、このままアンドロイドアプリの開発に慣れておきたいからです。
他の理由として、クロスプラットフォームは、その開発環境がOSや再生環境(スマートフォン)のバージョンアップに即座に対応できないこと、いずれ開発会社か開発者が、クロスプラットフォーム環境の開発をやめてしまうのではないかという個人的な危惧から、純粋な開発環境で開発したほうが後々得をするのではないかと考えたからです。
 例えば、WindowsとMacの両方で動作可能としたクロスプラットフォームがかつてありましたが、結局、それぞれのOSのための設定、調整が必要で個別の開発を進めたほうが後々のデバッグ等で開発がスムーズに進み、逆にクロスプラットフォームとして開発するほうがデメリットが大きかったりしました。
 しかも、そのソフトのバージョンアップがなくなるとまた他の開発ソフトに切り替える必要があったりと、メリットが有るのは最初だけだったように思えます。それでも、最初のうち、ソフトの内容が小規模のうちは非常に有効なソフトでした。

もちろんすべての例に当てはまることはないと思います。andEngineがなくなってしまうこともありますので、他の環境も徐々に覚えていきたいと思います。

とりあえず、AndEngineを利用して、アイフォンで開発したゲームをアンドロイドに移植するとどのような違いがあるのかをメモしていきたいと思います。

アイフォンアプリとして作成したミニゲーム「ひよこレスキュー」を多少改善して、アンドロイドアプリとして開発します。
こちらでダウンロードできます。https://itunes.apple.com/jp/app/hiyokoresukyu/id578574439?mt=8(iTunesに移動します)
他のアプリについてはこちら

参考図書:AndEngineでつくるAndroid 2Dゲーム , 立花 翔 (著)
実際に公開しているアプリについて解説されています。著者についてはあまり気にせず日本を選びましたが、アイフォンアプリの開発本を書いている人でもありました。アイフォンアプリとアンドロイドアプリで100本以上も開発したそうです。
ゲーム自体が、ミニゲームでほんの数分程度しか遊べないようなゲームですが、個人でアプリ開発をするのに参考になる内容です。

AndEngineには物理演算エンジンも利用できます。物理エンジンBox2Dを使いたいときは別途ダウンロードして、インポートする必要があります。
box2dはcocosでも利用できます。私はcocos2d for iPhoneのbox2dはまだ、勉強していないので、今後cocos2d for iPhoneのbox2dを利用したアプリも作ってみたいと思います。

・開発環境
MacOSX10.8.5、Eclipse、ネクサス7(2013)、PowerBookPro(2012)、外部モニター使用

<比較内容>
・画像の表示
・BOX2Dの利用
・その他情報BOX2D、R.U.B.E 、cocos2d for iPhone with box2dチュートリアル
・スマートフォンアプリの市場について

画像の表示

cocos2d for iPhone

andEngine
画像サイズよりも大きめの領域を確保してから画像から読み込みます。(自動で領域を確保してくれません。)
どのフォルダassets/gfxにあるのかも記入する必要があります。

[c]
Scene scene;
protected static final int CAMERA_WIDTH=800;
protected static final int CAMERA_HEIGHT=480;
BitmapTextureAtlas playerTexture;
ITextureRegion playerTextureRegion;
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
playerTexture=new BitmapTextureAtlas(getTextureManager(), 64, 64);//画像サイズ
playerTextureRegion=BitmapTextureAtlasTextureRegionFactory.createFromAsset(playerTexture,
this , "player.png",0,0);
playerTexture.load();
Sprite sPlayer =new Sprite(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, playerTextureRegion, this.mEngine.getVertexBufferObjectManager());
sPlayer.setRotation(45.0f);//必要に応じて
this.scene.attachChild(sPlayer);//box2dのときは、ここはコメントにし、他のところでattachchildします。
[/c]

[c]
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
throws Exception {
// TODO Auto-generated method stub
this.scene=new Scene();
this.scene.setBackground(new Background(0, 125, 58));

//box2dの場合で通常のSpriteでは必要ありません。
physicsWorld=new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);
this.scene.registerUpdateHandler(physicsWorld);

//common
pOnCreateSceneCallback.onCreateSceneFinished(sceneManager.createSplashScene());

}

[/c]
box2dでは更に物理ワールドを追加します。
[c]
PhysicsWorld physicsWorld;
FixtureDef PLAYER_FIX=PhysicsFactory.createFixtureDef(10.0f, 1.0f, 0.0f);
Body body=PhysicsFactory.createCircleBody(physicsWorld, sPlayer, BodyType.DynamicBody, PLAYER_FIX);

this.scene.attachChild(sPlayer);//
physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPlayer, body, true, false));

[/c]

BOX2Dの利用

Rectangle 四角形のポリゴン表示

Rectangle 四角形のポリゴンを表示する場合、比重、弾力、摩擦抵抗の順で環境設定します。

アンドエンジンは、左上から下に向かって正座標になります。
そして、四角形の基準点も上から基準です。ポリゴンの中心点ではありません。3Dモデリングをしたりすると、だいたいオブジェクトの中心が基準になるので、BOX2Dもそうかと思ったら、違うみたいで、上の位置が基準のようです。

(注)「AndEngine GLES2 Anchor Centerというライブラリがあり、これを使用することで、cocos2dと同様に、左下原点、座標中心座標となります。なお、AndEngineをremobeして入れ替えることになります。」

そのため、
new Rectangle()の引数は
左上X、左上Y、厚さ幅(左からの幅)、高さ(上からの高さ)、VertexBufferObjectManager()
となり、
画面上の右側にポリゴンをカメラ上下に配置したいときは、
左上座標をカメラ幅(厚さを15としたので、その分を引いてます。)位置にして、上から下に向かってカメラ高さにします。
よって、CAMERA_WIDTHの400-15とY座標の0を基準にして、厚さと高さを指定しています。
なお、ポリゴンの中心が基準ではありません(だと思います。つい勘違いして、オブジェクトの中心位置がオブジェクトの基準点だと思いがちです)。

座標の基準はiOSと同じです。
cocos2dの場合は、下が原点になります。左下が原点(0,0)で、上に向かてY座標は正になります。ここは注意が必要です。
SpriteがないのでConnectは必要ありません。
画像box2d_1.png
box2d
[c]
//right wall
int CAMERA_WIDTH=400;
int CAMERA_HEIGHT=800;
FixtureDef WALL_FIX=PhysicsFactory.createFixtureDef(0.0f, 0.0f, 0.0f);//比重、弾力、摩擦抵抗の順
Rectangle rightWallRectangle=new Rectangle(CAMERA_WIDTH-15, 0, 15, CAMERA_HEIGHT, getBaseActivity().getEngine().getVertexBufferObjectManager());//15引くことで、見えない状態から見える位置に戻してます。
rightWallRectangle.setColor(new Color(0, 100, 0));
PhysicsFactory.createBoxBody(physicsWorld, rightWallRectangle, BodyType.StaticBody, WALL_FIX);
attachChild(rightWallRectangle);
[/c]

その他情報BOX2D

Box2dで使用するキャラクターやオブジェクトの設定、当たり判定、リグ、IK(インバースキネマティクス)、コネクション関係を設定するツールソフト。

R.U.B.E stands for Really Useful Box2D Editor. 約3000円のツール

Box2D mountain-bike

http://www.iforce2d.net/b2dtut/
Box2D tutorials – Introduction – iforce2d

・cocos2d for iPhone with box2d アイフォンアプリ用のbox2dのチュートリアルも参考になると思うので記載
Intro to Box2D with Cocos2D 2.X Tutorial: Bouncing Balls | Ray Wenderlich

How To Create A Breakout Game with Box2D and Cocos2D 2.X Tutorial: Part 1 | Ray Wenderlich

How To Create A Breakout Game with Box2D and Cocos2D 2.X Tutorial: Part 2 | Ray Wenderlich

スマートフォンアプリの市場について

アイフォンとアンドロイド携帯、その他の携帯電話、スマートフォンが発売されています。現在、アンドロイド携帯端末が多く、そして2番めにアイフォン端末だと思います。
主流の2つのスマートフォンに向けて、アプリを開発することが望ましいことは言うまでもありません。
 実際にadmobをアイフォンアプリとアンドロイドアプリに設定して、広告表示数をチェックしてみたところ、ほぼおなじ回数の広告が表示されていました。ダウンロード数が少ないので、他のアプリ全般に共通しているといえることではないですが、この結果をみると、できるだけ、多くのプラットフォームに対応したほうが、広告表示回数が多くなるということがわかりました。

2013年5作目の次のスマートフォンアプリは何を作るか?  iPhone cocos2d, Android AndEngine, unity

2013年5作目の次のスマートフォンアプリは何を作るか?  iPhone cocos2d, Android AndEngine, unity

・経緯

これまで今年に入ってアイフォンアプリを主流として4本のアプリを作成しました。
アイフォンがメインだった理由は、複数の開発言語を覚えるのが面倒であり、テスト環境であるタブレットを揃える資金がもったいないからです。つまり、アンドロイドアプリを作ろうとすれば、アンドロイド用タブレットを購入する必要があるので、作ることはないと思ってました。
 けど、作れそうだったので、タブレットを購入してアプリを完成させました。アンドロイドの市場も見逃せないと思ったからです。

次のアプリをどうするのか決めなくてはなりません。
今年5作目、通しで6作目のアプリ候補として、

・検討

1.Androidのアンドエンジンフレームワークを使ったアプリ、アイフォンアプリからの移植
アンドエンジンフレームワークはまだ使ったことがありません。Androidアプリは1作ビジネス、学習アプリを作成済み。

2.unityユニティを使った3Dアプリ
ユニティ学習中、一時休止中であり、公開アプリはまだなし。

3.アイフォンココス2Dcocos2d for iPhoneを使ったアプリ、過去3作を作成済み

を考えています。

ユニティは今後主流になると思われますが、数年後無くなるか、全て有料になるかもしれません。
andEngineアンドエンジンもどうなるのか。
そう言ってしまうと、ココスcocos2dもどうなるのか?
プラットフォームはいつか新旧交代の浮き目に合うのは必定でいまどうこう考えても同じです。

アイフォン、Android両方対応のユニティが一番魅力的です。でも、素材の作成が面倒です。3Dですから、Blenderなどの3Dアプリケーションでモデリング、テクスチャマッピングなどを施す必要があります。
つまり、素材の作成で自分が息切れしそうで、完成まで時間がかなり必要と予想されます。

・結論

ここで、それぞれフレームワーク、開発環境の特性を知っていなければ、どのようなアプリを作るのにどのフレームワークを使用するのが良いのか、最適なフレームワークなのか理解できません。

という事で、取り敢えず、Androidのアンドエンジンで作ってみようかと思います。
その後は、ユニティで作ってみようかと思います。
または、アイフォンアプリの過去作品のバージョンアップや広告挿入でもよいかもしれません。

ちなみに、cocos2d-xというC++によるクロスプラットフォームもあります。アイフォンでもアンドロイドでもどちらでも動作可能です。
しかし、クロスプラットフォームというのは、経験則からいって、今後どうなるのか非常に不明であり、細かい仕様をそれぞれのプラットフォームで実現しようとすると問題が発生しそうなので、今のところは検討しません。
これは、自分の実力が足りないからであり、もう少し、アイフォンやアンドロイドアプリを作成していってから検討しようと思います。

まずはそれぞれのプラットフォームの仕様や構成を勉強しようと思います。

android版弁理士短答試験過去問題記録ノート無料アプリをグーグルプレイにアップ完了|グーグルプレイにアップロードした時に間違ってしまった手順

android版弁理士短答試験過去問題記録ノート無料アプリをグーグルプレイにアップ

無料ダウンロード、特許法、実用新案法、意匠法、商標法の条文を搭載

android版弁理士短答試験過去問題記録ノート無料アプリ

先月アイフォン版の弁理士短答試験過去問題記録ノートを開発し、今回アンドロイド版を開発、アップしました。
アイフォン版についてはこちらiOS7 iPhoneアプリ(4作目)申請からリリース状況のまとめ

機能についてはほぼ同じですが、アイフォンとアンドロイドのOSと開発環境の違いから少し画面構成、操作方法など変わりました。

現在、後発のアンドロイド版には法文集に簡単な検索機能が付加されています。

<アイフォンアプリとアンドロイドアプリ開発の感想>
 アイフォンアプリをいままでにゲームを含めて4本、今回はじめてアンドロイドアプリを1本開発しました。
 アイフォンアプリとアンドロイドアプリの開発を振り返ると、アイフォンのほうが作りやすいという印象を受けました。
 理由として
1.画面サイズが一定の範囲で固定されている
2.XCODE、開発環境が便利、ストーリーボードが使いやすい
3.開発者にすべてのコードを無理に記載させない配慮がある(個人的)

でした。
アンドロイドアプリで面倒なのが、画面構成、レイアウトでした。
XML、いわゆるブラウザに表示するように画面にオブジェクトを配置していきますが、思ったように配置できずにイライラします。
 これは、後に、あらゆる画面サイズに対応するための処置なのだなと思わされるのですが、たくさんのモニタサイズの全てに配慮するなど無理であり、きちんと仕様にまとめるべきではないのかアンドロイド担当者に言いたいくらいでした。

グーグルプレイの登録に25ドル必要です。

・説明
弁理士短答試験の過去問題(現在は平成25年度の問題を使用)を学習する無料の勉強アプリです。60問の問題から1問を選択して学習します。
正解回数を履歴として記録しますので、勉強が不十分な問題を把握することができます。
さらに、特許法、実用新案法、意匠法、商標法の条文データを搭載。(著作権、不正競争防止法他の条文については今後のバージョンアップで対応予定)
android_web_1

android_web_2

android_web_3

登録の注意点

・グーグルプレイにアップロードした時に間違ってしまった手順、操作

apkをアップロードしようとしたら「zipalign が実行されていない APK をアップロードしました。APK で zipalign を実行し、もう一度アップロードする必要があります。」というエラー

eclipseからandroidアプリへのデジタル署名手順が必要らしいです
android_key
1.”Android Tools” > “Export Signed Application Package…
を実行して、必要な情報を入力
2.指示に従って入力して、新しいAPKファイルを作成して、
3.アップロードして、
4.公開設定にすれば終わりです。
AM8:06

ただ、どのURLかいまわからない。たぶん次のようになると思います。
https://play.google.com/store/apps/details?id=com.example.application

android版弁理士短答試験過去問題記録ノート無料アプリ

(2)アイフォンからアンドロイドアプリ移植、ボタンに画像を設定した

(2)アイフォンからアンドロイドアプリ移植、ボタンに画像を設定した

 アイフォンの場合は、ストーリーボードに標準のボタンを配置して、customを設定して、画像を読み込み、設定します。
ほとんど、画面上で設定します。
 アンドロイドは、xmlで設定します。
 
・ボタン、アンドロイド
1.drawableに、button用のxmlを作成します。作成のときはselectorを選択します。
そしてレイアウトに、button用のxmlを指定します。そうすることで、レイアウト、button用のxml、ボタン画像というように設定されていきます。

レイアウト.xmlの記載
ボタンに画像を設定した場合とイメージボタンを設定した場合、どちらもcustom.xmlを選択可能
[c]
<!– custom button, custom.xml –>
<Button
android:id="@+id/buttonStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:scaleType="centerInside"
android:background="@drawable/custom" />

<!– custom Imagebutton, custom.xml –>
<ImageButton
android:id="@+id/imgButtonStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:background="@null"
android:src="@drawable/custom" />
[/c]

button用のxmlの記載 startはstart.png,今は1種類しかないので、プレス、フォーカスとも同じファイルを指定
[c]
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/start"></item>
<item android:state_focused="true" android:drawable="@drawable/start"></item>
<item android:drawable="@drawable/start"></item>

</selector>
[/c]

ボタンの角丸
[c] <corners android:radius="5dip" /> [/c]

【Androidアプリ作成】ボタンのカスタマイズ

3 Android 今日のエラー、グローバル変数設定エラー、This version of the rendering library is more recent than your version of ADT plug-in、バックグラウンドからの復帰でエラー、Cursor cursor=db.rawQuery(selectQuery, null)

3 Android 今日のエラー、グローバル変数設定エラー、This version of the rendering library is more recent than your version of ADT plug-in、バックグラウンドからの復帰でエラー、Cursor cursor=db.rawQuery(selectQuery, null);

前回のエラーIntentのfinish()でエラー、textViewの初期化忘れ、強制終了、レイアウトXMLの記載ミス

(1)Activityにまたがってグローバルに変数などのオブジェクトを共有でエラー

何度コードをチェックして見てもグローバル変数を設定したところでエラーとなります。コードの記載が間違っているのかとなやっていて、
再度、参考サイトを参考にすると、AndroidManifest.xmlの設定を忘れていました。


AndroidManifest.xmlの中のapplicationタグの中に
android:name=”Globals”

これでOK。
なお、アイフォンのXCODEにはxmlはありませんので、グローバル変数を使うときにアンドロイドのような設定はありません。
デリゲートするだけです。

(2)配列に値が代入されていないのに、値を取り出そうとしていた
>値を代入した後に、値を取り出すように変更(コードをリライト、メソッド(関数)化したときに、順序がばらばらになってしまったという現象でした)

(3)onCreateにsetContentVIew() が記載されていないミス
>正しく記載

(4)指定したレイアウトに指定したオブジェクトボタンがなかった、または誤記
>必要なオブジェクトボタンと正しいオブジェクトを設定した。

(5)任意の画面に戻るとエラーになる。それは仕様です。

トップ、リスト、問題、答え。の順で画面を切り換えて移動して、答え画面で、リストに飛ぶIntentするとエラーとなります。そこで、intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONTは途中の画面に戻っても
エラーになりませんが、ここで、finish()の戻りが、変わってしまいます。
つまり、途中で流れを変えてしまいましたので、いままでの流れを変えてしまうことになりました。
そして、この流れが変わった状況で、画面遷移をするとまた、エラーになりました。
アンドロイドの仕様では、順番に移動し元に戻ることが基準になるようです。

そこで、案としては、答えの画面をダイアログにする。
または、トップ表紙を辞めてリスト画面を最初にする。
が考えられました。
トップは単に表紙の役割でしかないので、トップを止めれば良いのです。
しかし、なんとなくソフトとして突然学習が始まるのは、急すぎる気がします。

一応、答えからトップに戻る場合は、エラーになるという問題ありません。途中のリスト画面に戻ってしまうので問題が発生してしまうのです。

 いろいろと調べてみると、トップからリスト画面に移動するときに、Intent発行時にActivityスタックをクリアすれば良いという記載がありました。
 [c]
Intent intent = new Intent(getApplicationContext(), 移動先のクラス.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
[/c]

【Android】Intent発行時にActivityスタックをクリアする方法を参照
これで、試してみます。
だめなときは、トップ画面を止めようかと。
それでも上手くいかないときは、答え画面をやめて、ダイアログにしようと思います。

 
(6)This version of the rendering library is more recent than your version of ADT plug-in
新しくSDKをバージョンアップしたら、レイアウトが表示されなかった。

Click Help > Install New Software.
In the Work with field, enter: https://dl-ssl.google.com/android/eclipse/
Select Developer Tools / Android Development Tools.
Click Next and complete the wizard.

でインストール

(7)多重起動を禁止
AndroidManifestのactivity内
android:launchMode=”singleTask”
を追加してみた

これでどうなるか
だめですね。多重起動してる。
改善せず。

(8)sherlock を導入して、警告が表示されるのは自作のプロジェクトのlibs/android-support-v4.jarをEclipseから削除すれば
よいそうです。

ActionBarSherlockをアプリで使おうとして導入時”Jar mismatch! Fix your dependencies”と出た時の対処

(8)バックグラウンドからの復帰でエラー
Qlist.javaにintentするとエラーになってしまう。
他のアクティビティを表示させていて、バックグラウンドになってもエラーにはならないのに。

そこで、public void onDestroy()、onStop() など を入れました。

@Override
public void onUserLeaveHint(){
//ホームボタンが押された時や、他のアプリが起動した時に呼ばれる
//戻るボタンが押された場合には呼ばれない
finish();//ここで、Qlist.javaを終了させる
}
として、Qlistのアクティビティが起動していたら、強制的に終了させるようにしてみました。
すると、とりあえず、Qlist.javaのアクティビティのときにバックグラウンドになっても強制終了することはなくなりました。
しかし、今度は、タスクリストで、Qlist.javaのアクティビティが表示されるときには、アプリの最初の画面からになってしまいました。
これは、 onUserLeaveHint()のfinish()をコメントにすれば、すべて丸く納まるのか?
この点については、後日やってみようと思います。
まずは、onUserLeaveHintで、強制終了はなくなりました。
しかし、他にも問題がありました。他の画面のアクティビティでも終了していて、戻るでQlist画面が表示されません。

そこで、onStop()にfinish()を入れました。
でもこれだと画面が切り替わるとQLISTを削除終了します。

うーんと悩んでいてfinish()を入れずに、再度確認したら、強制終了しなくなりました。
もしかすると他のところを直していてそこが原因だったか?

とりあえず、このまま進めてみます。

(9)SQLiteでエラーCursor cursor=db.rawQuery(selectQuery, null);
の次の処理でエラーです。
>原因
単に検索結果が該当なしなだけでした。
検索結果が0なのに、配列から格納された以上の値を取得しようとしていました。
検索結果が0のときはなにもしないようにしました。

ネクサス7購入、アンドロイドアプリデバッグ、しかし、開発者オプションを表示させるのに裏技があったなんて。Mac OSXでandroidの実機テストnexus7 USBデバッグ どこ?

ネクサス7購入、アンドロイドアプリデバッグ、しかし、開発者オプションを表示させるのに裏技があったなんて

ネクサス7を購入して早速、MacOSXにUSB接続してアンドロイドアプリを実行させようと思ったら、
開発者オプションがありません。
なんだ?どうしたんだと思ったら、裏技の設定が必要でした。

このサイトを参考にしました。
Nexus7で実機デバッグ!

まさか7回タップするなんて。
でもようやくこれで、アンドロイドで実機テストできます。

やっぱり実機で使ってみると、いろいろと改善点がでてきます。

Android 今日のエラー Intentのfinish()でエラー、textViewの初期化忘れ、強制終了、レイアウトXMLの記載ミス

Android 今日のエラー Intentのfinish()でエラー、textViewの初期化忘れ、強制終了、レイアウトXMLの記載ミス

前回のエラー
(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない|(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

(1)Intentのfinish()でエラー、
画面遷移で、AからB画面へ移動し、B画面でボタンにfinish()を記載して実行するとA画面に戻ってエラーとなりました。
ActivityThread.performDestroyActivity(IBinder, boolean, int, boolean) line: 3273

B画面にpublic void onDestroy() {が記載されていたので、これをコメントにしました。
>正常になりました。
未だ試していないのですが、ADMOBを入れて正常に動作していないために、onDestroyでエラーになったおそれがあります。
まずは、正常に動作する方向で確認してからAdomobを入れていきます。
いまは、B画面でAdmobは正常に表示されていない状態でした。

(2)textViewの初期化忘れ
(TextView)findViewById(R.id.hobunWhichTextView);
初期化しました。

(3)突然エラーで強制終了、レイアウトXMLの記載ミス

>症状:AからBに画面遷移するとき、B画面が表示されずに強制終了する
数時間前の作業まで、正常に動作していると思っていたコードに追加作業をして、実行したら強制終了するようになった。
>対応:コメントにしながらどこまで表示されているのかをデバッグしました。
デバッガには、どこが悪いのか表示されているのか不明な状態。
宣言をしているところまでのコードにして徐々にコメント解除しながら、どこが悪いのかをかくにんします
>原因
backButton=(Button)findViewById(R.id.hobunBackButton);
のレイアウトXML側のR.id.hobunBackButtonの記載が違っていました。
 たぶん、どこかのタイミングで誤って文字の一部を削除してしまったみたいです。
 
コンパイルはエラーもなく、実行しても直ちに強制終了はなく、該当する画面が表示されたときに強制終了となりました。
こういったエラーの箇所を調べるのは難しいので、こまめに動作検証をしながら、コードを書いていくしかありません。

(4)admobエラー、広告を表示する領域が足りません。
Not enough space to show ad! Wants: <426, 66>, Has: <800, 0>
領域を確保して表示させます。が、なかなかうまく領域を確保するタグが組めません。試行錯誤になると思います。

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない|(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない

  1. アイフォンアプリの場合はこちら
  2. Androidアプリ開発、今日のエラーまとめ(1)ー(6)分、2003年9月22日〜11月7日(1)から(6)まとめのリンクはこちら
  3. (7) 今日のエラーAndroidアプリ開発、andEngine GLES2 Anchor Center,box2d |manifest.xmlの記述ミスでintentでエラーはこちら

アイフォンアプリをアンドロイドアプリに移植中です。
 アイフォンの開発言語はobjective-cで、アンドロイドはJAVA言語になります。JAVAをベースにしてアンドロイドアプリをつくるとしてもアンドロイドアプリのための固有の開発方法がありそうです。

(1)ワーニング AndroidManifest.xml

Description Resource Path Location Type
Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details. AndroidManifest.xml

android:targetSdkVersion=”18″
しました。

(2)android エミュレータ 動かない,エミュレータを起動してもアプリが実行されないときは

EclipseからAndroidエミュレータを起動してもアプリが実行されない
この記事を参考にしてようやくハローワールドが表示されました。

(3)intent 画面遷移で移動できない、対処はAndroidActivity.xmlの設定忘れ

AndroidActivity.xmlに

(4)adView = new AdView(this, AdSize.BANNER, “ID-XXX”);でエラー

Could not find class ‘com.google.ads.AdView’, referenced from method com.AAA.bentannote2.MainActivity.onCreate

Admobのライブラリの挿入方法が教科書のヘルプであるグーグルの説明と異なり、変わったようです。

正しくは、
libs/GoogleAdMobAdsSdk-XXX.jarとなるように、GoogleAdMobAdsSdk-XXX.jarをコピーします。
私は手動で、コピペしました。
もし、すでに、教科書通りにGoogleAdMobAdsSdk-XXX.jarを挿入していたら、挿入済みを一旦削除してください。
すでに登録されているGoogleAdMobAdsSdk-XXX.jarがあるとエラーになります。

AdMobの使い方
Could not find class ‘com.google.ads.AdView’

(5)配列が初期化されていない

宣言だけして、初期化を忘れていました。
 myArray=new ArrayList();
宣言をしたら、どこにでもいいのでまず、初期化を書くように習慣づけたいと思います。

(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

x-code,android アイフォンアプリを作ったのでアンドロイドアプリを作ってみよう

アンドロイドアプリなんて作ることはないと思ってました。
アンドロイドアプリを作成するのに、今度はJAVAを覚えなくてはならないという手間が嫌でした。それに、アンドロイドアプリを作っても果たしてダウンロードをする人がいるのか、作っても無駄な作業にナルト思っていました。
しかし、自分の作ったアイフォンアプリが比較的よくできたと思ってしまったので、アンドロイドアプリを作ることにしました。それに、自分が使うアプリなら、誰もダウンロードしてくれなくても、自分が使えていればそれで十分なのかもしれません。

まずは、作り方から勉強します。
内容と構成はアイフォンアプリと同じなので必要な機能を覚えて行きます。

まずは簡単なアプリからはじめます。

アイフォンアプリのx-codeと比較しながらメモをとっていきます。
いずれ、アンドロイドアプリの作り方をすぐに忘れてしまいます。忘れても良いように書いておきます。

<アイフォンアプリをアンドロイドに移植開発>

アイフォンアプリは、スマートボードを利用してViewを作成すると便利です。アンドロイドは、1アプリで画面展開を一覧表示する機能はないので、1View1画面毎に表示して、作業をします。
レイアウトXMLがView画面に相当し、JAVAクラスからでもオブジェクトを作成できます。

 説明文中で、アイフォンアプリ、iOS, XCODE, objective-Cと書いた場合は、アイフォンアプリについての説明を記載したものです。アンドロイドアプリ、eclipse, JAVAと書いた場合は、アンドロイドアプリについての説明を記載したものです。
 開発環境、開発言語と細かく区別せず大きな枠で説明しています。解釈上意味不明なところがあると思います。

1.ログ出力

アイフォンアプリ,XCODEのログ出力
NSLog(@”DB is OK”);
DB is OK
と出力されます。

アンドロイド, JAVAのログ出力

画像

Log.d(“DB”, “OK”);
最初の引数はタグで、ログキャットのタグの列に表示されます。そして、第2引数はテキストの列に表示されます。
DB OK
として、列に別れて出力されます。こちらの方が見やすいかもしれません。

2.ボタンアクションコードの記載方法

XCODEの場合は、IBActionのメソッドに記載します。

JAVAの場合は、いくつかあります。
また、以下のコードは、少し、コードが長くなります。他にも、レイアウトxmlのボタンに記載してメソッドのように整理できる記載もあります。今回は書籍でよく見かけるコードにしました。
[c]
Button button;
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.ClickListerner(){
public void onClick(View v){
//here
}
});
[/c]
[c]
Button backButton;
backButton=(Button)findViewById(R.id.backButton);
backButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
[/c]
と、メソッドの引数の中に、メソッドがあるように記載します。

3.データベース SQLite3,CoreData

アイフォンでは、PCで事前に作成したSQLite3のファイルをそのまま利用して読み込みます。
書き込みは、CoreDataが利用できます。なお、CoreDataのエンティティ(テーブルみたいなもの)が増えた場合は、インストールしたアプリを削除しないとアプリが起動しない場合があります。

アンドロイド
データベースSQLite3のファイルを参照のみの利用でも、assetフォルダに保管し、使用するときにSQLite3ファイル自体を一旦コピーしてから利用します。
そして、assetフォルダに配置するファイルは1MB以下にする必要があるとのこと。大きすぎるファイルは要注意です。分割するか圧縮する必要があるようです。

参考サイト
[Android Programming] sqliteのDBファイルをPCでつくってandroidで使う – ipreachableの日記

既存のDBをAndroidで使えるようにする方法 – hentekoのdev日記

SQLiteからの結果をListViewに表示する

既存のsqliteファイルをAndroidに組み込む : ナカノ製作所開発備忘録

Y.A.M の 雑記帳: Android あらかじめ作成した SQLite database をアプリに取り込む

4.オブジェクト、ボタン、ラベル、テキストエディット

 XCODEでは、ボタン等をViewに配置し、ヘッダーファイルにドラッグし紐付けします。プログラムで使用しないオブジェクトは紐付けの必要はありません。
 
 JAVAでは、レイアウトのXMLで配置し、クラスに宣言、命令を記載します。
なお、異なるクラスでも同じレイアウトXMLを利用できます。

5.レイアウトVIewの他クラスの利用

アイフォン
オブジェクトを自由に好きなように配置できます。

アンドロイド
レイアウトのXMLに別のレイアウトXMLのオブジェクトを利用できる
レイアウトの自由度は低い。まるでウェブブラウザーで表示するhtmlファイルです。
ただし、様々な画像サイズのタブレットに対応できる柔軟性を持っていますが、デザイン性が低くなるかもしれません。

6.クラスをまたがって変数を共有する

XCODEでは、デリゲートを使用します。

JAVAでは、Applicationを継承したクラスを作ります。
Activityにまたがってグローバルに変数などのオブジェクトを共有するには

7.画像、音声ファイル

アイフォン
プロジェクトのどの場所でもよいですが、フォルダをプロジェクトに作ってわかりやすく配置します。
例えば、pic/back, number, buttonなど。

アンドロイド
resフォルダに保存し、音声ファイルはres/rawに保存します。

8.エミュレータ

アイフォン
アイフォン、iPadのエミュレータが起動します。
レティナ対応のiPadは大きすぎるので、縮小して表示します。特に難しい設定はありません。

アンドロイド
どのターゲットのエミュレータを起動するのか設定し実行します。
もし、エミュレータが実行しても、アプリが起動しない場合は、、、、、を選択します。
ここが一番わかりにくかったです。

9.文字列の取得

アンドロイド
strings.xmlの文字列を取得したいとき
getString(R.string.year) yearはH25年度として登録

10 レイアウトに配置されたTextViewに、文字配列を与えてListViewに表示する

アイフォン
テーブルビューを使用します。

アンドロイド
(1)は、レイアウトxmllistview_row.xmlに配置されたtextView1、textView2に、マップのquestion, answerの文字列をそれぞれ与えます。
そして、このコードにはありませんが、listview.xmlのListViewに表示させるものです。
(2)は、マップなしの単純なArrayListを、listview_row.xmlに配置されたtextView1に配置させるものです。

[c]
(1)SimpleAdapter simpleAdapter=new SimpleAdapter(this, globals.contactArrayList, R.layout.listview_row,new String[]{"question, answer"}, new int[]{R.id.textView1,R.id.textView2});

(2)adapterQuestionString=new ArrayAdapter<String>(this, R.layout.listview_row,R.id.listRowTextView,globals.arrayPartStrings);

[/c]

メタルギア ソリッド V グラウンド・ゼロズ 通常版(初回生産限定特典:本篇『MGSV:TPP』で使用可能なマザーベース スタッフDLC同梱&Amazon.co.jp限定特典:本篇『MGSV:TPP』で使用可能な特殊ダンボール箱DLC付き)プラットフォーム: PlayStation 4、発売予定日は2014年3月20日

Titan Fallタイタンフォール [オンラインコード] [ダウンロード]発売予定日時は2014年3月13日、ガンダムやバルキリー、装甲騎兵ボトムズみたいに人型ロボットに搭乗して敵を倒すゲーム、コックピットからのカメラ映像がリアリティがあり、まさに未来のロボットを操縦する感覚で遊べるゲーム

グラビアアイドル、清水みさと/恋して、みさと先生!


【GoPro HERO3+】LCDタッチ バックパック(リミテッドエディション)「ALCDB-303」在庫あり
「LCDタッチ バックパック」は、GoProカメラ用のLCDタッチスクリーンです。
カメラ背面に装着し、フレーミングや再生など、LCDスクリーンの利便性を提供します。
脱着式なので、不要な時は取り外してGoProカメラをできるだけ軽く小さくコンパクトにすることができます。

アンドロイドAndroidアプリ製作でディスプレイサイズ、スクリーンサイズ取得判別,Unity Admob、UNITY C#、ジャバスクリプトのリンクメモ

アンドロイドAndroidアプリ製作でディスプレイサイズ、スクリーンサイズ取得判別,Unity Admob、UNITY C#、ジャバスクリプトのリンクメモ

調べ物をしたときに、今後参考となるサイトのリンクメモです。

【スクリーンサイズの取得、ディスプレイ情報の取得】

アンドロイドAndroidアプリ製作でディスプレイサイズ、スクリーンサイズ取得判別
AndEngineのダウンロード

画面解像度などディスプレイの情報を取得する方法 –
[Androidアプリ/Android] ぺんたん info

[AndroidTips][Java]画面のサイズや解像度、密度などのデイスプレイの情報を取得する |
Androidアプリ開発情報まとめブログ

画面サイズを取得する
– Androidプログラマへの道 ~ Moonlight 明日香 ~ – Seesaa Wiki(ウィキ)

Androidの画面サイズを攻略して機種依存を吸収する(ナビゲーションバーとステータスバーのサイズを取得する) |
Tech Booster

【・UnityでAdmob広告】

[Unity][iOS]Unityで吐き出したXcodeプロジェクトへのAdmob表示方法 | iPhoneアプリをつくりんぐ
>最近の更新はありません。
[[UIViewController alloc]init];を使うタイプです。

xapp: Unity3Dで作ったゲームにAdMobを表示する方法(iOS編)
>UnityViewController*を使うタイプ

20121123 アド部定例会 unityアプリに広告を入れる方法

【・UNITY C#、javascriptジャバスクリプト】

ゲームは初心者にやさしく: Unity C#とJavascriptの主な違い

Convert unity javascript (unityscript) to C#

Unityでゲーム開発

イノベーション |シーンを跨いで情報を引き継ぐ

ComputerGraphics/Unity/Tips/Script/GetChildAndParentObject – Neareal

【・Unity transform 移動】

ActionScript入門Wiki – Unity – コードからTransformに値を設定する

Unityのtransformのアクセス速度 | 生存日記

【・Unity 回転】

Unity コントローラーの向きにモデルを回転させる方法 – 物欲センサーと戦う日々

[Unity] GameObject自身の角度を取得したい: ものづくりログ

UnityのJavaScript:Vector3とQuaternion : Nanashi-soft

Unity:C#のforループ文 : Nanashi-soft

Unityのプラットフォーム別、ディスプレイスクリーンサイズ別判別 Unity iOSにおけるGUIのiPhoneディスプレイ対応


クリスマストイレットペーパー

画像蒟蒻畑 温州みかん味(25g*12コ入)【蒟蒻畑】[こんにゃく ゼリー ダイエット食品]
●こんにゃく(グルコマンナン)をフルーツ果汁で味付けしたポーションタイプのフルーツコンニャクです。

イカリボタン25mm ブラックダメージ加工ボタンの付け替え、ボタンを無くてお困りの方

インクカートリッジ、IC6CL70L エプソン