カテゴリー別アーカイブ: Androidアプリ

Android application

Missing argument 2 for wpdb::prepare()

WordPressのバージョンは今や3.8ですが3.5、3.6にアップデートして投稿したときに、下記ワ-ニングエラーメッセージに悩まされました。

Warning: Missing argument 2 for wpdb::prepare(), called in /home/deanne/public_html/wp-content/plugins/no-future-posts/no-future-posts.php on line 74 and defined in /home/deanne/public_html/wp-includes/wp-db.php on line 99

WarningError長らく放っていましたが今回、時間ができたので根本対策をしました。エラー出力を抑制する方法もありますが、根本対応を示します。

原因はno-future-posts.phpにおいて74行で呼び出しているprepare関数の引数の数が合わないというエラーであることが多くのWeb作成者の投稿で分かりました。もう少し噛み砕いて具体的な改修手順をメモに記します。

対象となるPHPソースファイルがテーマに関わるものならば、ダッシューボード-外観-テーマの編集-サイドメニューでソース選択-ソース修正-ファイル更新でソースファイルを変更します。

テーマ編集に無関係なno-future-posts.phpはFFFTPでパソコンにダウンロードし、74行目をテキストエディタにて下に示したようにprepare関数の引数を1から2に改訂し、再びFFFTPを用いてアップロードしWordPressを再起動したところエラーはなくなりました。

$wpdb->query($wpdb->prepare($sql)); ⇒ $wpdb->query($wpdb->prepare($sql, null));

前回までは、WordPress起動-投稿-エラー発生-WordPress終了-WordPress再起動でだましだまし使っていましたが、上記修正ですっきりしました。改訂方法は他にもあると思いますが、バックアップなどを取って自己責任にてご利用ください。

FFFTPは曽田氏によって開発されたフリーなFTPクライアントソフトウェアです。

Androidエラー対策

Androidアプリ開発で新しいプロジェクトを定義したり、SDKのバージョンを上げたときに以下のようなエラーに悩まされることがあります。その解決の一例を示します。

Android-error ①Google Play services out of date. Requires 4030500 but found 3266112. このたぐいのエラーが起きたときは、ライブラリーの同期がとれていないことを意味します。

Google-Play-services_libは古く、そのプロジェクトのAndroidManifest.xmlに指定したライブラリーバージョンが実機のバージョン(3.2.66)と異なるとエラーメッセージは指摘しています。

プロジェクトが格納されているフォルダ、例えば、C:\PLEIADES\workspace\google-play-services_lib\AndroidManifest.xmlファイルのandroid:versionCode値は4.0.30となっていて両者に違いがあることがわかります。

package=”com.google.android.gms” android:versionCode=”4030530″ android:versionName=”4.0.30 (889083-30)” Google-Play-services_libプロジェクトと実機のどちらかを変更して同一状態にすれば解決しますが、実機のライブラリーを差し替えるのは影響が大き過ぎ得策ではありません。そこでプロジェクト側を変更するためにバージョンが’3266112’であるライブラリーをインポートします。

package=”com.google.android.gms” android:versionCode=”3265130″ android:versionName=”3.2.65 (834000-30)” 3.2.66は用意できないので上に示すAndroidManifest.xmlを有するライブラリープロジェクトをインポートしたところ、問題なく動作しました。

すべてのケースを調査したわけではありませんが、頭から2つのパラメータが同じであれば動作するようです。同様のエラーが起きたときには挑戦してみてください。

ActionBar

②エラー:Error retrieving parent for item:No resource found that matches the giving name ‘Theme Appcompat’. このエラーは新しいプロジェクトに切り替えた時などに起きるようです。メッセージの意味からするとActionBarをサポートする[android-support-v7-appcompat]プロジェクトを開いていなかったことが最大の原因でした。

念のため、コマンドプロンプトを起動して以下のコマンドを入力したら解決しました。 eclipse.exe -clean.cmd 以上です。

浦島太郎状態

スマートフォンのAndroidアプリ開発から離れて、しばらくぶりに戻ると浦島太郎状態になることがあります。開発環境や動作環境にちょっとした変更を加えただけで、動作まで至らず四苦八苦してしまいました。元の状態に復帰するまで一週間を要しました。 動作手順を逐一、メモすることはしていません。これが厳しい納期や高額な受注額だったらと思うと行動の可視化が必要と考えます。最低2台のカメラが作動していて、1台は全体的な作業概要を把握するために、もう一台はパソコン画面を詳細に記録し続けるために利用します。 上記方法は理想論です。気をつければ頓挫しかかることもなかった顛末を、二度と起こさないように以下の記録に留めます。 《原因》 原因は、実機上で「設定」を起動して「Google Play Services」と「Google Play開発者サービス」を削除したことにあります。 《復帰手順》 1)GooglePlay開発者サービスを再インストールする。 2)GooglePlay開発者サービスを起動する。GooglePlay 上記図の矢印部が「インストール済み」でなく「インストール」となっていれば、Google Play Servicesが削除されているので画面をクリックしてGoogle Play Servicesをインストールします。図の矢印部が「インストール済み」に変わったことを確認します。 以上で実機側の条件が整ったことになります。 次に実機環境が新しくなり、ECLIPSE開発環境を再設定したことで、エラーが起きてしまいました。エラーごとの対応を以下に示します。 1)Could not find XXX.apk! ライブラリの参照に不備がある場合に出力されます。 ①Google Play Servicesのライブラリーにチェックを入れる。Libプロパティ ②起動プロジェクトのライブラリーを組み込んでかつ、ライブラリーのチェックを外す。プロジェクトプロパティ 2)Re-installation failed due to different application signatures. 上記エラーが起きたときは、コマンドプロンプト(DOSプロンプト)上から、’adb uninstall パッケージ名’を実行します。アプリケーションがアンインストールされます。 まとめとして、スマートフォンのメモリサイズ不足というエラーが出ても安易に、既存アプリをアンインストールしてはならないということを体験しました。

スマホ用抽選器取り扱い説明書

抽選器取り扱い説明書 Header1

はじめに

本書はAndroidスマートフォン用アプリケーションである「抽選器」《名称:Lottery》の取り扱いについて記述されています。ここで提供される「抽選器」はあみだくじ福引を兼ね合わせた機能を持っています。用途としては、当選者や掃除当番を決めるためにあみだくじを引く、40名クラスのスピーチ順番を無作為に決める、グループ分けを行う、宴会席順決定、ホテルの部屋割りを決める、野外焼肉パーティーの任務・役割を決めるなどです。このアプリはGoogle Play公開されています。

目次

1 動作環境 2 機能 3 操作方法 3.1 操作概要 3.2 抽選 3.3 抽選方法設定 3.4 動作設定 3.5 任務設定 3.5.1 詳細設定 3.5.2 簡易設定 3.6 案内 4 使用例と抽選結果画面 4.1 詳細設定の使用例 4.2 簡易設定の使用例 5 警告メッセージ 6 注意事項 Designer M.T. 第一版 2013-10-31 製造番号 A1001

1 動作環境野外パーティー

①    OS Android ②    Android 要件2.2 以上 ③    参加数・任務数 最大40

2 機能

①    抽選 ②    抽選方法設定 ③    動作設定 ④    任務設定 ⑤    案内

3 操作方法

 3.1 操作概要

スマートフォン画面は機種やOSバージョンにより異なることがありますが、下図に示すステータス領域、タイトル領域、アプリケーション領域から成り立っています。上の2つはステータスバー、アクションバーと呼ばれています。このアプリケーションではアクションバーの4つのメニューボタンとアプリケーション画面の上左にある動作ボタン(Start,Stop,Ok)によって操作されます。4つのメニューボタンは2つしか表示されない機種もありますが、moreボタンを選択すると残りの2つが表示されます。Android3.0以前ではmoreボタンの代わりにメニューボタンで代替されます。この他に処理を終了させたり、元の画面に戻るバックキーが使用されます。メニューボタンや動作ボタンの用途と有効になるタイミングを以下に示します。 動作ボタンとアクションメニューの用途 用途 スマートフォン画面名称 Start-G1

3.2 抽選

抽選機能は無作為にくじを引きオリジナル番号を対応付けます。まず、抽選方法を説明します。アプリケーションを起動すると抽選準備モードになりOKボタンをタップすると抽選開始画面が現れます。Startボタンを押すと抽選器(がらがらポン)が回転し、Stopボタンを押せば回転は停止し、番号つきボールが抽選器の中から出てきて抽選が決定します。この番号が抽選番号になります。一定時間内にStopボタンが押されなければ、取り消しになり再度、挑戦できます。くじが引かれた場合、残り数はひとつ減じられて表示されます。残りが0になると1から始まる整理番号とID、名称が表示されます。簡易設定の場合は、①~⑲⑳20,21~38,39,40の丸囲み数字、算用数字が表示されます。任務数の暗黙値は40ですが、この値は任務設定画面に進んで2~40を選択できます。

3.3 抽選方法設定

抽選方法(抽選モード)設定とは抽選のやり方を手動か自動かを決めることです。この機能を起動するにはアクションメニューの抽選設定メニューをタップします。抽選モードは下図に示すように手動―自動―すぐにの順に繰り返されます。動作ボタンの上に赤字で表示される抽選モードを確認しながら最後にOKボタンを押します。インストール直後は手動になっていて、次からは前回状態を引き継ぎます。抽選モードの設定について説明します。手動はStartボタンとStopボタンを使って抽選を決定し、自動は自動的にがらがらポンを回転・停止して抽選を決めます。最後のすぐにではがらがらポンを使わずに発生させた乱数結果に基づいて抽選が決まります。 抽選モード

3.4 動作設定

ガイドメッセージは通常、日本語になっていて、動作設定メニューをタップすれば英語で案内されます。この機能は日本語と英語が交互に切り替わります。また動作設定メニューをダブルタップすれば、回転動作を盛り上げたり、静寂を望んだり、操作の区切りや警告のために動作音が交互に鳴動・停止状態になります。このメニューがアクションバーに表示されない場合は、動作音の切り替えはできません。

3.5 任務設定

任務設定で対象となる抽選に名称を振付けます。合わせて件数を確定します。設定方法には詳細設定と簡易設定があります。

3.5.1 詳細設定

アクションバーにある任務設定メニューを選択して任務設定を起動し下記の画面を表示します。IDと名称を入力して登録、表示と指定して任務を設定します。入力済みの項目を修正する場合は更新を指定します。不要になった場合は削除を選択し表示で随時、確認します。10人分の任務情報を入力し、表示で確認した画面を以下に示します。 任務設定2B 元の画面に戻る場合は、戻るキーをタップします。今回の例で名称欄の数字は会費を意味します。300円や500円が複数あるのでこの場合は無理ですが、重なりが皆無であれば、ID欄に会費、名称欄に任務名を指定することが可能です。IDは一般に登録、更新、削除のキーワードに使われるので唯一無二が原則です。

3.5.2 簡易設定

40名のクラス員をグループ分けする場合などにおいて、欠番のない出席番号で抽選を決めるときはIDや名称を省略できるので、簡易設定が便利です。初めのIDに//40を設定するだけで済み、40人の入力IDデータとして①②③…⑲⑳2122…3940を指定したことと等価になります。ある催し物に12人が参加し、1~12の受け付け番号で管理される場合にも適用できます。//12と指定し12人のIDは①~⑫が使われます。 詳細設定で入力したデータを保存しながら簡易設定する場合は、//〇〇を入力すると以下のようになります。任務設定処理はIDが小さい順に並べ替えられるので、以下の例では最初に見つかった//12が採用されます。紛らわしさを避けるため//18は削除しておいた方が無難です。以前の詳細データに戻す場合は//から始まる項目をすべて削除すれば元に戻ります。 任務設定4

3.6 案内

操作を理解するためにヘルプメニューをタップします。取り扱い説明書の格納先URLアドレスにリンクし、説明書を読むことによって操作方法を習得します。戻るキーをタップして元の画面に戻ります。

4 使用例と抽選結果画面

 4.1 詳細設定の使用例

①    最初の起動画面からアクションメニューの任務設定を選びます。 ②    次に表示ボタンを押し、登録状況を確認しデータに過不足があれば、登録、更新、削除を繰り返し再び表示で確認して戻るキーをタップして元の画面に戻ります。 ③    アクションメニューが現れたら抽選方法を決めた後、 ボタンをタップして抽選を確定します。抽選結果を以下に表示します。 result1

 4.2 簡易設定の使用例

①    同様にアクションメニューの任務設定を選びます。 ②    ID欄に//40を入力し、表示で登録結果を確認します。 ③    戻るキーをタップして元の画面に戻ります。 ④    数が多い場合は抽選方法ではすぐにを選んで、Okボタンをタップして抽選を確定します。抽選結果を以下に表示します。 result2

5 警告メッセージ

警告メッセージ

6 注意事項

①    抽選は乱数を使用し、作為が混入する度合いは低くなっています。 ②    抽選方法を手動にした場合、Stopキーを押すタイミングで抽選の決定に影響を与えることができますが、実機がらがらポンでくじを引くことと大差なく運しだいです。 ③    簡易設定であみだくじのように抽選結果を扱うには、褒賞や任務の重要度順にあらかじめ約束事を決めておかなければなりません。12人グループを例にすれば掃除、見回り、買出しの当番を選ぶ場合、抽選前に10番:掃除当番、11番:見回り当番、12番:買出し当番のように全員に周知します。 ④    簡易設定での部屋割りも同様です。20人で4つの部屋に等しく分ける場合は、抽選番号の上から5人ずつA,B,C,Dの各部屋に割り振ることを周知徹底させます。 ⑤    メニュー等は大略、日本語、英語の2ヶ国語に対応していますが、抽選方法設定や取り扱い説明書は日本版のみです。 以上

PDFファイルを取り扱い説明書に

このブログはWordPressを用いて作成されています。WordPressで図や表を織り込んだ説明書を載せたいときがあります。MicroSoft Wordでスマートフォンのバックキーを画像化して文章に埋め込んても望むようには表示されません。このような場合、PDFにしてPDFファイルをダウンロードして確認するのが一般的です。PDFをJPEGやPNGにして画像として載せても、文字ははっきりとは表示されず不満が残ります。そこでPDFをそのまま、表示できないかと考えます。 バックキー2 MAXI designを始め多くの方々が、プラグイン「Embed PDF」をインストールして直接、PDF表示する方法を発表していますが後追い記事を以下に示します。WordPressのプラグインウィンドウで「http://wordpress.org/extend/plugins/dirtysuds-embed-pdf/」を検索してインストール後、有効化します。 その後、PDFファイルをアップロードし、ファイルURLアドレスを確保します。ファイルURLの前に[]のなかにembed、最後に[]のなかに/embedというタグで囲みます。表示が乱れたらwidth=”600″などのパラメータを追加します。お試しください。

Androidアプリ開発環境構築5たび

WordPressやAddinツールが世界の技術者により、刻々、改訂されてこちとらは参照するばかりで、恐縮しています。そんなわけで注文をつけることはできませんが、全ツールに同期がとられていませんので、以前に問題なく動作していたものが、WordPressを改訂した途端に警告エラーが表示されるようになりました。ほっておいてもそのうちに治るような気がしてそのままにしています。 このたび、Windows8パソコン(64ビット)を開発環境に追加したので、五度目のAndroidアプリ開発環境構築をメモに残します。

1)ECLIPSEをインストールする ECLIPSEの原本は英語版です。そのため、開発言語毎にまとめられたeclipse本体(日本語化済)と幾つかのプラグイン群のセットのPleiades All in Oneをインストールします。http://mergedoc.sourceforge.jp/から以下の画面を表示させ、赤矢印で示した PleiadesAllInOne 「Pleiades All in One4.3.0.v20130626」の64ビット、Standard Edition、Ultimateを指定してダウンロードします。圧縮ファイルPleiades-e4.3-ultimate-jre_20130626.zipを解凍して、PleiadesフォルダをAndroidツールフォルダにコピーします。

2)JDK(Java SE Development kit 7 update 25開発キット)のインストール Javaアプリのライブラリやコンパイラが同梱されている「JDK」をダウンロードしてインストールします。ダウンロードしたjdk-7u25-windows-x64.exeを実行します。

3)SDKのインストール Androidアプリのライブラリやエミュレータなどを同梱した「Android SDK」のダウンロードはリンク先(AndroidSDK本体)を指定し、DOWNLOAD FOR OTHER PLATFORMSをクリックし、SDK Tools Onlyの項目にある「android-sdk_r22.0.5-windows.zip」をダウンロードします。 android-sdk_r22.0.5-windows.zipを解凍して「android-sdk-windows」フォルダをPleiadesフォルダにコピーします。

4)ADT Pluginのインストール ECLIPSE.exeを起動してAndroid SDKの各ソフトを使えるようにする「ADT Plugin」をインストールします。ヘルプ-新規インストール-追加-作業対象に https://dl-ssl.google.com/android/eclipse/の後、OKと入力し追加、すべて選択、次へ、次へ、使用条件の条項に同意します、完了と指定します。操作の切れ目で多少の時間がかかります。

5)細部の設定 Android SDKマネージャーとAndroid仮想デバイス・マネージャーにて、デバッグする機種の設定などを行います。

6)何度かビルドを繰り返えすとウィンドウ(W)メニューにAndroid SDKマネージャーとAndroid仮想デバイスマネージャーが表示されなくなることがあります。その解決策を以下に示します。 ウィンドウ(W)-パースペクティブカスタマイズ(Z)-コマンド・グループ可用性を指定し、Android SDKおよびAVDマネージャーにチェックマークを入れOKを入力します。 以上で簡単な「Hello World」プロジェクトは動作するものと思います。この後には少しずつ、開発環境を拡張することになります。

Androidアプリ機種依存からの脱却

アンドロイドアプリを開発するに、機種に依存せずにあらゆるメーカーのスマホで問題なく動作させたいという欲求があります。この情報は多くの方が提供され大いに役立っています。

「画面サイズを攻略して機種依存を吸収する」などはありがたい記事です。この記事を受けて今回、当方のミスにより誤動作がありましたが解決に至ったくだりをメモにまとめます。

処理の概要はある画像を描画してその周辺に文字を表示させ回転させるというものです。画面サイズ(縦、横)を取得する関数を呼べば100%期待通りの動作になると思いきや、画面サイズが同じ値ながら画像が期待より大きく描かれ誤動作になりました。この原因が判明しましたので記録にとどめます。

HDPI

Android仮想デバイス・マネージャーを起動し、Device Definitionsを選択すると上左のような画面が現れ、様々な解像度のデバイスがあることがわかります。

一方、javaアプリプロジェクトをパッケージ・エクスプローラーで表示した図を右に示します。今回の失敗は画像ファイルをリソースフォルダres-drawable-mdpiにしか置いてないことが誤動作の原因でした。

たとえば、Galaxy Nexusを選ぶならばdrawable-xhdpiにも画像ファイルを置いておかないと期待した動作にならないようです。これらの規則性はまだ調査段階ですが、resフォルダのすべてのdrawableサブフォルダに画像ファイルを格納しておおむね期待した動作を得ていますがどうしても納得のいかない画面が表示されるものもあって今後の課題です。

Callback機能

かつてjavaであみだくじゲームを作った際、くじが決定する様をダイナマイトの導火線が燃え移るように描画するべく挑戦したけれど、徒労に終わっていました。ダイナマイト0時間が経過しJavaに関する知識も少しずつ増えて時間差表示に目途が立ち、導火線が燃え移りダイナマイトに点火し爆発する小アプリを開発しました。 lockCanvasとunlockCanvasAndPostを用いてブロックを作りdrawBitmapで画像を描画しました。動作結果をユーチューブに投稿しましたのでご覧いただきたいです。 http://youtu.be/qoXRztnZ8W0

スマホ画像をPC上に保存する方法

Android端末の画像をPC上に保存したい時があります。スマホ画像をYoutubeに投稿したい、スマホの動きをプレゼン画面に表示したいときなどです。AndroidScreenCast.jnlpでPC上に動画ファイルとして保存する1つの方法をまとめました。USBケーブルとAndroid SDKを用意します。ソフトウェアの細かなダウンロードとインストール方法は参考にしたURLをご参照ください。

①Android SDKをインストールします。Android(アンドロイド)で画面のハードコピーをとる方法 【画面キャプチャー】 を参考にしました。

②Android端末とPCをUSBケーブルで接続します。

③コマンドプロンプトでAndroidandroid-sdk-toolsにあるDDMS.BAT(最近は同じフォルダにあるMONITOR.BATを推奨)を実行します。Eclipse.exeで起動した画面からDDMSを実行すると、「Could not open selected VM debug port(8700).」で失敗します。Eclipse.exeが実行中ならば終了してから行います。

④AndroidScreencastをダウンロードして(ダウンロード先androidscreencast.jnlp) AndroidScreenCast.jnlpを実行します。

⑤メニュー左のRecordを選択します。

⑥動画として保存するファイル名を指定します。

⑦スマートフォンでアプリを実行します。

⑧再びメニューのRecordを押して保存するファイルをクローズします。

AndroidScreenCast

動画ファイル(XXXX.MOV)が指定先に保存されています。このままでもWindows  Media Playerで再生できますが、MOVtoWMV変換ツールでWindows版動画ファイルが出来上がります。音声が録音されなかったり、画面の動きがぎこちなかったりしますが、フリー版としては合格でしょう。

Google Maps Android API v2に

地図/位置情報/GPSを使うAndroidアプリを作るための基本的なシステムであるGoogle Maps Android APIが2012年12月、グーグルからv2に改訂・発表され、2013年3月にはv1仕様のAPI Key取得も打ち切られてしまったので、地図アプリを新規に開発するにはv2を利用するほかありません。

無償で他のシステムに乗る危うさが図らずも浮き彫りになりましたが、自力で地図システムを構築することはできないので、長いものに巻かれる以外はないのです。ここで大きく躓いてしまいました。

バージョン間に互換性がないので古いプログラムコードが利用できなくなり全面的な改訂は大きな負担になりました。そのため、新しい仕様による簡単なテストサンプルが動作するまで10日間ほどかかりました。その顛末を以下に示します。

GoogleMaps2

解説書を購入しようとしてWebを検索しましたがまだありません。サンプルコードが本家本元のグーグルからリリースされていて編集することなく動作するはずですが、それを可能にするためのハードルは高いです。

それはなぜかというと、同様の開発や動作条件を設定するのが容易でないのです。新しい用語、v1とv2の差などを理解しなければならず、大きな機能を持つサンプルコードは不向きです。この点、篤志家が発表している技術情報が役立ちました。目を通したWebサイトを掲げます。

①Google Maps Android API v2のサンプルを動作させるまでの解説, http://9ensan.com/blog/smartphone/android/google-maps-android-api-v2-sample/

②Google Maps Android API V2を使ってみる, http://foonyan.sakura.ne.jp/wisteriahill/gmap_androidapiv2/index.html

③ぐだぐだAndroid開発, http://bloominfeeling.blogspot.jp/

④Google Maps Android API v2 その1, http://sos.hatenablog.jp/entry/2013/04/07/015042

⑤Google Maps Android API v2 を利用するための API キーの取得方法, http://android.keicode.com/basics/mapview-v2-how-to-get-apikey.php

⑥Google Maps Android API v2 を利用して地図を表示する, http://www.ipentec.com/document/document.aspx?page=android-google-maps-android-api-v2&culture=ja-jp

⑦Google Maps Android API v2を使ってみた, http://www.adamrocker.com/blog/334/google-maps-android-api-v2.html

⑧Google Maps Android API v2 を利用する簡単な例, http://android.keicode.com/basics/mapview-v2-code.php

⑨Android1.6からFragmentを使う, http://dev.classmethod.jp/smartphone/android/android-tips-28-support-fragment/

⑩Google Maps Android API V2を使ってみる, http://foonyan.sakura.ne.jp/wisteriahill/gmap_androidapiv2/index.html

⑪Google Maps Android API V2を使ってみる2, http://foonyan.sakura.ne.jp/wisteriahill/gmap_androidapiv2II/index.html

⑫Google Maps Android API公式ページ, https://developers.google.com/maps/documentation/android/

上に示した資料がたいへん参考になりました。動作環境がそれぞれ異なるため、正常に動作を確認できたのは⑨、⑩、⑪の解説記事です。小さなサンプルコードのコンパイルエラーを取り払うことにもかなりの時間が取られ、その後、実行させても実行時エラーに悩まされます。

それらが解決されても、グーグルマーケットが古く更新を促すメッセージに往生しました。グーグルマーケットからGoogle Play Storeに変わってしばらく経ち、改訂方法が有効期限を過ぎたりして難渋の末、ようやく地図が描画されたときはほっとしました。

新バージョンは新しい機能が追加され大きな希望を膨らますには十分のようです。 Google Maps APIというまぎらわし規格があり、Androidを省略するとえらい目にあいます。ただで使わせていただくことはありがたいことですが、そのうち課金されるのではと恐れているのは私だけでしょうか。