GIMPでCould not save image. エラーでPNGが保存できない時

GIMPで作成したファイルをPNGファイルにexportしようとしたら、Could not save image.というエラーが表示された。macだけの問題なのかな?
スクリーンショット 2014-07-19 10.27.43
検索したら解決方法が載ってたので以下にメモしておく。
スクリーンショット 2014-07-19 10.23.16
Image > Mode > Convert to Color Profile… を選択
スクリーンショット 2014-07-19 10.23.36
RGB workspace (sRGB built-in)を選択して、Convertを行う。
その後にpngにエクスポートを行うと、今度は正しくエクスポート出来ました。

カスタムレイアウトの作成

一覧に戻る
スクリーンサイズと一見性を考慮したデザインという点を除けば、ウェアラブル端末用のレイアウト作成は携帯デバイスと同じです。良いユーザー体験は除きますが、携帯アプリの機能やUIを持ち込むべきではありません。必要な場合のみカスタムレイアウトを作成すべきです。良いウェアラブルアプリのデザイン方法についてはデザインガイドラインを読んでください。

カスタムNotificationを作成する

一般的には、携帯デバイスで通知を作成しそれを自動的にウェアラブル端末に同期するようにします。ひとたび通知を構築すれば、それぞれ異なるフォームファクターのためにデザインを行わなくても、多くの種類のデバイス(ウェアラブル端末だけではくやがてはAutoやTV)に表示されます。
スタンダードな(NotificationCompat.BigTextStyleやNotificationCompat.InboxStyleといった)通知スタイルでは目的に合わない場合、カスタムしたレイアウトのアクティビティを表示することができます。単にカスタム通知を生成しそれをウェアラブル端末に発行します。システムはそれらの通知を携帯端末には同期しません。
注意:ウェアラブルのカスタム通知を生成する場合、サポート・ライブラリの代わりに標準の通知API(API Level20)を使用する事ができます。
カスタム通知を作成するには:
1. レイアウトを作成し表示したいアクティビティのコンテンツビューにセットします。
[java]public void onCreate(Bundle bundle){

setContentView(R.layout.notification_activity);
}[/java]
2.  ウェアラブル端末のコンテキストストリームプロセスにアクティビティの表示を許可するようにアクティビティに必要なプロパティをAndroidマニフェストに定義します。アクテビティをエクスポートを可能に、組み込みを可能に、タスク一体性を空白として定義する必要があります。またテーマをTheme.DeviceDefault.Lightに設定することをおすすめします。例えば次のようにします。
[xml]<activity android:name=”com.example.MyDisplayActivity”
android:exported=”true”
android:allowEmbedded=”true”
android:taskAffinity=””
android:theme=”@android:style/Theme.DeviceDefault.Light” />[/xml]
3. 表示したいアクテビティ用にペンディングインテントを作成します。例えば次のようにします。
[java]Intent notificationIntent = new Intent(this, NotificationActivity.class);
PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);[/java]
4. 通知を作成しPendingIntentのsetDisplayIntent()を呼び出します。システムは、このペンディングインテントをユーザが通知を見る時にアクテビティを起動するために使用します。
5. notify()メソッドで通知を発行します。
注意:通知がホームスクリーン上に覗いている時、システムは通知のセマンティックデータから生成し、通常のテンプレートを使用して通知を表示します。このテンプレートは全ウォッチフェイスに適しています。ユーザが通知を上にスワイプした時に通知のカスタムアクティビティが表示されます。

ウェアラブルUIライブラリでレイアウトを作る

Android Studioプロジェクトウィザードでウェアラブルアプリを作った時に自動的にインクルードされる非公式なUIライブラリです。build.gradeファイルに次のように依存関係を宣言してライブラリを追加することもできます。
[text]dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
compile ‘com.google.android.support:wearable:+’
compile ‘com.google.android.gms:play-services-wearable:+’
}[/text]
これらのライブラリはウェアラブルのために設計されたUIを構築することができます。これらは主要なクラスの一部です。

  • BoxInsetLayout – スクリーン形状を認識して丸型ディスプレイの中央に四角形の子レイアウトとしてボックス化するFrameLayout
  • CardFragment – 拡張範囲内のコンテンツを提示する垂直にスクロール可能なカードのフラグメント
  • CircledImageView – 丸で囲まれた画像
  • ConfirmationActivity – ユーザーがアクションした後に確認のアニメーションを表示するActivity
  • DismissOverlayView -長押しで非表示になるビュー
  • GridViewPager – 水平と垂直にページデータを移動するためのレイアウトマネージャ。ビューが示すページを生成するためにGridPagerAdapterを提供する必要がある
  • GridPagerAdapter – GridViewPagerにページを提供するアダプター
  • FragmentGridPagerAdapter – 各ページをフラグメントにしたGridPagerAdapterの実装。
  • WatchViewStub – デバイスの画面形状に応じて特定のレイアウトをインフレート出来るクラス
  • WearableListView – 小さなウェアラブルデバイスで使いやすいように最適化されたListViewの別バージョン。垂直スクロールのリストを表示し、スクロールを停止した時に自動的に一番近い項目で止まる

上記クラスの完全なAPIリファレンスドキュメントをダウンロードして下さい。このドキュメントはそれぞれのUIウィジェットの使用方法が記載されています。
次:音声機能を追加する>
 

Android Wearエミュレータと実機をUSBデバッグ接続する

ちょっとわかりずらかったのでメモ。
まず、Wearのエミュレータを起動後、Android端末をUSB接続。
adbコマンドを実行
adb -d forward tcp:5601 tcp:5601
Google Playからダウンロード・インストールしたAndroid Wearを起動する。
すでに実機(Gear Live)と接続済みの場合、以下の様な画面になる。
Screenshot_2014-07-16-22-02-20
 
エミュレータと接続するため、「新しいウェアラブルとペア設定」をタップ。
Screenshot_2014-07-16-22-02-27
 
歯車をタップして「エミュレータをペア設定」
Screenshot_2014-07-16-22-02-35
 
以上で、エミュレータと接続完了します。接続すると以下の様な画面になります。
Screenshot_2014-07-16-22-03-09
 
 
 

ウェアラブルアプリケーションの作成と実行

一覧に戻る

Samsun Galaxy Gear Live届きました!

IMG_0428
 
一週間使ってみました。小さなデバイスですし、表示される内容も多くはありません。正直あまり期待してはいなかったのですが、以外にも便利だということがわかりました。まず、重要なメールが着信した時だけ、バイブと共に通知が表示されます。ちらっと腕を見れば誰から来たメールの内容もすぐにわかって、意外に便利です。あと、以外にも歩数計がお気に入りです。初期設定では1万歩が目標に設定されています。歩数がいつでも手元に表示されるので、エスカレータと階段があれば、ついつい階段で歩数を稼ぎたくなっちゃいます。1万歩を達成すると、「目標の歩数に到達しました」とちょっとお祝いしてくれます。心拍数計も今のところ楽しく使っています。正確性はイマイチですが、健康管理としては十分だと思います。普段は60〜70ぐらいで、まあ男性の平均値ぐらいですが、今日わかったのは、人前でスピーチする前は心拍数が100回ぐらいまで上がって、緊張しまくっている自分を再認識。なるほど、緊張すると心拍数はこれくらいまであがるのね、と認識しました。充電は1日しか持たないのが唯一の欠点ですが、スマートフォンを充電台に置くときに同時に充電するようにしているので、そんなに苦には感じません。音声認識は便利ですが、駅のホームや電車の中では当然恥ずかしくて使えないので残念です。雑踏を歩きながら思いついたフレーズや買い物リストをちょっとメモするのにはかなり便利だったりします。入力した内容はGoogle Keepに登録するように設定していますので、あとからスマホやPCで確認できるのもいいですね。
Android Wear、かなり気に入っちゃっています。はやくオリジナルアプリを作りたい!というわけで、今日も翻訳しながら理解を進めていきたいと思います。
 

ウェアラブルアプリケーションの作成と実行

ウェアラブルアプリはウェアラブルデバイス上で直接実行され、ウェアラブル特有であるセンサ、アクティビティ、サービスその他の低レベルハードウェアへアクセスすることができます。
Google Play ストアに公開するなら、ウェアラブルアプリを含んだセットとなる携帯用アプリも必要です。ウェアラブルはGoogle Play ストアに対応していないので、ユーザーがセットとなる携帯アプリをダウンロードすると、自動的にウェアラブルにウェアララブル用アプリが送信されます。携帯向けアプリは重い処理、ネットワーク処理、その他の作業を行ってウェアラブルに結果を送信するのに便利です。
このレッスンでは、デバイスまたはエミュレータを設定し、ウェアラブルと、携帯アプリを含むプロジェクトを作成する方法を身につけます。

Android Wear エミュレータまたはデバイスを設定する

より良いユーザ体験を判断するためには実際のハードウエアで開発することをおすすめします。しかしエミュレータも異なるタイプのスクリーン形状をテストするのに役立ちます。
Android Studio バージョン0.8以降と、Gradle バージョン0.12以降が必要です。
java6以上が必要です。ここからjava7JDKをインストールして(java8は敬遠)、Android Studioをダウンロード、インストールします。

Android Wear仮想デバイスを設定する

Android Wear仮想デバイスの設定方法

  1. Tools > Android > AVD Managerをクリック。
  2. Create…をクリック。
  3. AVDを設定します。その他はデフォルト値のままにしておきます。
    1. AVD NAME – AVD名です
    2. Device – Android Wear の丸型か四角型かを指定します。
    3. Target – Android 4.4W – API Level20
    4. CPU/ABI – Android Wear ARM(armeabi-v7a)
    5. Keybord – Hardware keyboard presentを選択
    6. Skin – Deviceで選んた形状にあわせ、AndroidWearRoundもしくはAndroidWearSquareを選択します。
    7. Snapshot – 選択しません。
    8. Use Host GPU – ウェアラブルの通知でカスタムアクティビティをサポートするためには選択します。
  4. OKをクリック。
  5. エミュレータを起動します。
    1. 作成した仮想デバイスを選択します。
    2. Start…をクリックしてLaunchをクリックします。
    3. エミュレータが初期化されAndroid Wearのホーム画面が表示されるまで待ちます。
  6. 携帯とエミュレータをペアリングします。
    1. 携帯にて、Google Playから「Android Wear」アプリをインストールします。
    2. 携帯とパソコンをUSB接続します。
    3. AVDの接続ポートを接続された携帯デバイスへ向けます。(携帯を接続するたびに行う必要があります)
      adb -d forward tcp:5601 tcp:5601
    4. 携帯でAndroid Wearアプリを起動し、エミュレータに接続します。
    5. Android Wearアプリの右上隅のメニューから「Demo Card」をタップします。
    6. カードを選択するとエミュレータ上のホームスクリーンに通知として表示されます。

Android Wearデバイスの設定

Android Wearデバイスの設定方法

  1. Google Playから提供されるAndroid Wearアプリを携帯にインストールします。
  2. アプリケーションの説明に従い携帯とウェアラブルをペアリングします。これが出来れば、同期した携帯の通知をテストすることが出来ます。
  3. 携帯でAndroid Wearアプリを開いたままにしておききます。
  4. USB経由でパソコンにウェアラブルを接続するため、開発したアプリを直接インストールできます。ウェアラブルとAndoroid Wearaの両方にデバッグ許可の問合せメッセージが表示されます。
  5. Android Wearアプリでは、Always arrow from this computerにチェックを入れ、OKを押します。

Android StudioのAndroid toolウィンドウにウェアラブル端末のシステムログが表示されます。adb devicesコマンを実行した時にウェアラブル端末が表示されるはずです。

プロジェクトの作成

開発を始めるには、ウェアラブルと携帯のアプリケーションモジュールを含んだプロジェクトを作成します。Android Studioで、File>New Projectをクリックし、プロジェクトウィザードの指示に従いプロジェクトを作成します。ウィザードに従い、次の情報を入力します。

  1. Configure your Projectウィンドウで、アプリケーションメイトパッケージ名を入力します。
  2. Form Factorsウィンドウで
    1. Phone and Tabletを選択し、Minimum SDKをAPI8:Android2.2(Froyo)以降に設定します。
    2. Wearを選択し、Minimum SDKをAPI20:Android4.4(KitKat Wear)以降に設定します。
  3. 最初のAdd an Activityウィンドウで携帯端末用の空のActivityを追加します。
  4. 2つ目のAdd an Activityウィンドウで、Wear用の空のActivityを追加します。

ウィザードが完了するとAndroid Studioはプロジェクトに「mobile」と「wear」の2つのモジュールを作成します。これでアクティビティ、サービス、カスタムレイアウトなどを作成するための携帯用とWear用の両方を含むプロジェクトが出来ました。携帯用アプリでは、ネットワーク通信や重い処理や多くのユーザーとのやり取りが必要なタスクを行います。通常それらが完了したなら、ウェアラブル端末に対してノーティフィケーションまたはウェアラブル端末との同期及びデータ送信で通知します。
注意:Wearモジュールには、デバイスのスクリーンが丸型か四角形かによりレイアウトを生成するWatchViewStubを使ったHello Worldアクティビティも含んでいます。WatchViewStubクラスはwearable support libraryで提供されるUI widgetクラスの1つです。

ウェアラブルアプリをインストールする

開発時は携帯用アプリのようにアプリをウェアラブル端末にインストールすることができます。adb installコマンドまたはAndroid StudioのPlayボタンを使います。
アプリを公開する準備ができれば、携帯向けアプリにウェアラブル用アプリを組み込みます。ユーザがGooglePlayから携帯向けアプリをインストールすると、接続されたウェアラブル端末が自動的にウェアラブル用アプリを受信します。
注意:デバッグキーで認証したアプリではウェアラブル用アプリの自動インストールは機能しません。リリースキーのみで機能します。完全なウェアラブル用アプリのパッケージ方法の詳細についてはPackageing Wearable Appsを参照してください。
「Hello World」アプリケーションをウェアラブル端末にインストールするには、Run/Debug configuration ドロップダウンメニューからwearを選択し、Playボタンをクリックします。
アクティビティがウェアラブル端末に現れ、「Hello World!」と表示されます。

適切なライブラリのインクルード

プロジェクトウィザードの一部として、適切な依存関係がbuild.gradleファイルの適切なモジュールとしてインポートされます。それらの依存関係が必要なければ次の記述を読んでそれらが必要かどうか調べます。
通知(ノーティフィケーション)
Android v4 support library(もしくはv13。これにはv4が含まれています)には携帯上で既存の通知を拡張するためのAPIが含まれています。 ウェアラブルのみに表示される通知の場合には、ウェアラブル上の通常のフレームワークAPI(APL Level 20)だけを使い、プロジェクトのmobileモジュールからはサポートライブラリを削除できます。
ウェアラブルデータレイヤー
Wearable Data Layer APIでウェアラブル端末と携帯端末の間でデータを同期または送信する場合、最新バージョンのGoogle Play servicesが必要です。それらのAPIを使わない場合、両方のモジュールから依存関係を削除します。
ウェアラブルUIサポートライブラリ
これは非公式のライブラリで UI widgets designed for wearablesに含まれます。ベストプラクティスが示されているためアプリで使用することを推奨しますが、常に変更され続けます。しかしながらライブラリがアップデートされたとしても、アプリケーション内にコンパイルされているのであなたのアプリが動かなくなるということはありません。アップデートされたライブラリから新機能を使うためには、新しいバージョンに静的リンクし、それに応じてアプリケーションを更新する必要があります。このライブラリはウェアラブルアプリの作成にのみ適用できます。
次のレッスンでは、ウェアラブルのレイアウトデザイン作成だけでなく、プラットフォームでサポートされている様々な音声操作の方法についても学習していきます。
次へ:カスタムレイアウトの作成 >
 

ウェアラブルアプリの作成

一覧に戻る
Moto360も今月末には予約開始だと思われるが、もう待てません。とうとう、Gear Liveポチってしまいました。7/7出荷予定だそうですが、今現在まだ届いてません。
スクリーンショット 2014-07-07 4.50.09
配達状況を見ると「ベース通過」となっています。明日ぐらいには届くと嬉しいなぁ!

荷受       2014/7/4 ヤマト国際物流香港(東日2)	86530
出荷       2014/7/5 ヤマト国際物流香港(東日2)	86530
到着       2014/7/5 羽田小口通関支店	541720
輸入通関   2014/7/5 羽田小口通関支店	541720
国内発送   2014/7/6 国際宅急便サービスセンター	29970
国内発送   2014/7/6 国際宅急便サービスセンター	29970
作業店通過 2014/7/6 羽田クロノゲートベース	32990

さて、Gear Liveが届くまで、Android Wearのサイトを翻訳しながらWear開発について理解を深めていきたいと思います。
ウェアラブルアプリはデバイス上で直接実行され、センサーやGPUといったハードウェアにアクセス可能にします。それらは基本的に、Anroid SDKで他のデバイス向けにビルドされたアプリケーションと同じですが、デザインとユーザビリティと提供される機能の数は大きくことなります。携帯とウェアラブルアプリの主な相違点として次のようなものがあります。

  • システムにはタイムアウト期間が適用されます。アクティビティを表示したままでユーザが何も操作しない場合には、デバイスはスリープ状態になります。スリープから復帰すると、ActivityではなくWearのホームスクリーンが表示されます。もしあなたが何かを常時表示したいのなら、コンテキストストリームに通知を作成すべきです。
  • ウェアラブルアプリは携帯アプリに比べて比較的サイズが小さく機能的に少ない。ウェアラブル向けの機能だけが含まれており、通常それらは携帯アプリ向け機能のサブセット版となっています。一般的には、携帯上で操作を実行し、ウェアラブルには結果を送信するようにすべきです。
  • ユーザーはウェアラブルに直接アプリをダウンロードしなようにします。その代わりに、携帯アプリ内にウェアラブルアプリを同梱してください。システムはユーザが携帯アプリをインストールすると、自動的にウェアラブルアプリをインストールします。しかしながら、開発目的であればウェアラブルデバイスに直接アプリをインストールすることが出来ます。
  • ウェアラブルアプリは多くのAndroid標準APIにアクセス出来ますが、次のAPIはサポートされません。
    • android.webkit
    • android.print
    • android.app.backup
    • android.appwidget
    • android.hardware.usb
      APIを使用する前にhasSystemFeature()を呼べばウェアラブルがその機能をサポートするか調べることが出来ます。

注意:プロジェクトのセットアップ、ライブラリの包含、パッケージングツールなどADTでは提供されない機能を提供するので、Android Wearの開発にはAndroid Studioの使用をおすすめします。 以降このトレーニングではAndroid Studioを使うことを想定しております。
ウェアラブルアプリケーションの作成と実行
ウェアラブル用と携帯用のアプリモジュールの両方を含むAndroid Studioプロジェクトを作成する方法と、アプリをデバイス上やエミュレータ上で実行する方法を学習します。
カスタムレイアウトの作成
通知とアクティビティのカスタムレイアウトの作成と表示方法を学習します。
音声機能の追加
音声アクションでアクティビティを起動する方法と、任意の音声入力をするためにシステムの音声認識を起動する方法を学習します。
ウェアラブルアプリをパッケージ化する
携帯用アプリの中にウェアラブルアプリをパッケージ化する方法について学習します。ユーザーがGooglePlayからインストールすると、システムが自動的にウェアラブルアプリをインストールすることが出来ます。
Bluetooth経由でのデバッグ
USBの代わりにBluetooth経由でウェアラブルをデバッグする方法を学習します。