2011IT風雲児のブログIT界の風雲児の破天荒なブログです。よかれとおもってやってます。2011年4月29日金曜日Androidアプリ主要な構成要素について要点だけAndroidのアプリにはいくつかの重要な構成要素があって、それぞれ大まかには以下のようにとらえれば良い。checkoutのマンスリー販売レポートへのアクセスが簡単になった模様。Reportという項目が追加されてますね。うちに2010年1月からのデータがアクセス可能になるとのこと。2022-JPを試す。OSXのmailから送信したメールが「文字化けして読めないよ!」と言われることがある。これは文字コードの問題で、mailがデフォルトではUTF-8エンコーディングでメールを送信するのが原因みたい。このため、UTF-8に対応していないメーラで受信すると文字化けしてしまうというわけ。2022-JP)に設定してやればOK。2022-JPはJISコードとも呼ばれるもので、日本語のメールでは広く使われる文字エンコーディング方式。Notification(Push通知)とは、iOS上で非アクティブなアプリの状態をユーザに通知するための仕組み。アラート通知を通じてアプリはユーザにアプリの起動を促したり、バッジ(アプリアイコンに付与される数字)の表示、サウンド再生などを行う事ができる。Notificationの種類iOSで利用できる通知の仕組みは2種類。Notification(プッシュ通知、リモート通知):サーバからユーザのデバイスに通知を行える。Service(APNs)と通信する必要がある。providerとAPNsとの通信については別掲する。Notification(ローカル通知):当該アプリが動作しているデバイスに限って通知を行える。通知できるデータ(1)メッセージ(2)バッジ(3)サウンド:アプリに予め同梱されている必要があり、指定はファイル名で行う。(4)その他カスタムデータ:プッシュ通知が届くことは保証されていないので、重要なデータをここに乗せるべきではない。メッセージ、バッジ、サウンドはユーザ設定によってオフにできるので必ず通知されるわけではない。リモート通知で送信できるデータは256byte以内に制限されていることに注意。その他いずれも、通知を受けるためにアプリが起動している必要はない。アプリが起動しているときにも通知を受けたことを知る事は可能。通知を受けるときのパターンは以下の4パターン。それぞれ、内部的にコールされるメソッドとデータ、受取り方が異なるので注意。Marketでの決済に対応したことを書いたけど、他のキャリアの対応状況を整理してみた。結論として、大手3キャリアの主要端末ではキャリア決済が既に可能、という理解でOKそう。?いずれもキャリア決済可能なものは日本円で価格設定されている(約○○円と出ない)もの。あと、auは非対応の機種もあるので注意。Marketでない、Android上でのコンテンツ決済サービスのメモ。こちらはサイト側の対応が必要なので、対応サービスでのみ利用できる。Marketが加わった、という関係性みたい。4にアップデートしたときに、古いarm6用にビルドされたライブラリのリンクでエラーになる場合の解決方法。4のビルド設定のデフォルトが変わった模様。armv7のキーワードがあることが原因っぽい。ダブルクリックして、armv7のエントリを削除そうするとビルドに成功します。3GS以降はarmv7なので、当然armv7でビルドできるならそちらのほうが良いはず。Marketの決済まわりがどのような挙動になるのかをいくつかの条件で試して、整理してみた。1.docomo決済について・Wi-Fi接続だけ(SIMなし)のときはクレカ決済だけが可能。docomo決済はそもそも選択肢として出てこない。⇒docomo決済をするには3G回線が生きていることが条件ということかな。SIMがささっていても圏外では同様、だと思う。・docomo決済を選択すると、初回には住所氏名の入力が求められる。checkoutの「支払方法」の一つとして、クレカと並列として扱われる。xxxxxxxxxxx見たいな感じ。・docomo決済でアプリを購入するには、spモードパスワード入力が必須。・マーケットで「約○○円」と出るもの(たしか外貨払いのもの)は、docomo決済できない(項目としては出てるけど、グレーアウト)2.払い戻しについて・アプリ購入ご15分間は払い戻しが可能。Marketページに行くと、購入ボタンのところに「払い戻し」というボタンが出る・「払い戻し」をタップすると、払い戻し処理に合わせてアプリのアンインストールも行われる・一度払い戻しをしたアプリは、再購入時は払い戻し対象外。ウィジェットの更新頻度について要点だけupdatePeriodMillsの最低間隔は30分updatePeriodMillsによる更新はデバイスの復帰状態を解除する。短い間隔で更新したい場合はAlarmManagerを使う。こっちはスリープも有効。ウィジェットの更新はAppWidgetProviderInfoのupdatePeriodMills間隔で行われることになっている。この更新は端末がスリープも解除して行ってしまうため、あまり頻繁に行う事は推奨されていないし、実際30分より短い間隔でonUpdateは呼ばれないらしい(設定値が無視される)。これはデバイスのバッテリー消費を抑えるためでごもっとも。望ましくはユーザに更新間隔を設定させるUIも必要かもしれない。仮に30分より短い間隔で更新を行いたい場合にはAlarmManagerからIntentをコールするような方法を使い、こちらはスリープ中にデバイスをウェークアップさせてしまうことはない(でも操作中はバックグラウンドで動作してしまうから、やっぱり過度な更新は控えるべきなんだろう)。AlarmManagerを使った更新のやりかたは別途まとめるつもり。android2011年4月6日水曜日Androidロードマップの要点だけPOST時点でのロードマップを整理してみるテスト。Widgetとは、他のView(典型的にはHome画面)に埋め込まれる小さいアプリケーション。構成要素(1)AppWidgetProviderInfo:XMLで定義。レイアウトや更新頻度などを定義する(2)AppWidgetProvider:updated(onUpdate)/enabled(onEnabled)/disabled(onDisabled)/deleted(onDeleted)なとき、このクラスを介して処理を行う。このほかonReceiveメソッドも利用できるが通常不要。onUpdateはupdatePeriodMillis間隔で呼ばれる。layout:Widgetのレイアウトを定義する。使えるレイアウトやウィジェットに制限がある(RemoteViews)手順AndroidManifest.xmlにAppWidgetProviderのreceiverを定義する。このときintent-filterはandroid.appwidget.action.APPWIDGET_UPDATE。meta-data要素としてAppWidgetProviderInfoリソースのxmlを指定する。AppWidgetProviderInfoで指定できるのは幅(android:minWidth)高さ(android:minHeight)更新頻度(android:updatePeriodMillis)レイアウト(android:initialLayout)および設定用のActivity(android:configure)。Activityは通常のActivityとして定義するが、intent-filterとしてandroid.appwidget.action.APPWIDGET_CONFIGUREを設定する。そのうえでこのActivityはAppWidgetProviderInfoリソースで宣言される。WidgetがConfigurationActivityを使うとき、このアクティビティはWidgetの状態/設定を更新する責任がある。これはAppWidgetManagerのupdateAppWidgetメソッドを介して行う。Machine用の外部ディスクが不調になってしまったので、ディスク修復を試みました。試みたのですが途中で中断されてしまうので。fsckコマンドを試す。上記の環境でpylintをかけるとcv2のメンバがいないと怒られる。(実際はVSCode自体は関係ない。workspace..."あたりで起動がハングしてしまうことがあって、その対応メモ。Codeをバージョンアップしてみたらすごく速く使いやすくなっていたので、すこし本格的に環境を構築して使ってみることにしました。内部ネットワークが作成される。