harukazepc’s blog

インターネッツとAndroidなどが大好きです。あとは日々のことなど。

タブレット端末にて、WebView上でFlashを動かす方法

Android x Flash シリーズ!(そんなにやりたくない)

タブレット端末(というか3.xですかね)にて、WebView上でFlash(swf)を動かしたかったのですが、なんか音しか出ねー、画面は真っ黒真っ暗、みたいな現象が起きてたんです。
ブラウザだと、該当Flashは問題なく表示され実行できる。

結構根深い問題だとやだな、、、と思ってたんですが、解決できた風。

解決法:ハードウェアアクセラレーションのオプションを使う

AndroidManifest.xmlorへ以下を追記

 android:hardwareAccelerated="true"

Android 3.x の場合は、明示しないとなのですね・・・おそろしあ

以下のサイトを参考にさせていただきました!
http://stackoverflow.com/questions/5383364/flash-video-not-displaying-in-webview-for-android-3-0-1
http://y-anz-m.blogspot.com/2011/02/android-30-platform-3.html
http://bkiwad.wordpress.com/2011/06/03/android-webviewfragment-flash/

Titanium meetup Tokyo #11 に参加してきました #titaniumjp

Titanium な人たちが黙々とコーディングする(?)、Titanium meetup Tokyo #11 へ行ってきました。

http://atnd.org/events/19245

会場は、DNPソーシャルリンク様。会場への誘導や無線LAN設定のビラ、サンドウィッチやミネラルウォーターなどなど、本当に申し訳ないくらいの手厚いセッティングです。ありがとうございます!

本日は、黙々の前にAppcelerator増井さんが、QAに回答する、という感じでした。
以下まとめ。

  • iPhoneアプリをTitanium mobileで開発するにあたって、TabGroup周りの修飾を行うにはどのように行うのが一番スマートなのでしょうか。
    • bit.ly/titabbar2 をご参照ください。
  • 皆さんviewの実装ツールとか、デザイナーとプログラマーの分業をどうしているのか、ベストプラクティスを知りたいです。
    • Appceleratorで、GUIベースのUIビルダーを作ってる。年末くらい?
    • jssという仕組みはあるけど、分業に向いてるわけでもないよね。
    • 増井さんの経験では、ある程度実装した後に、デザイナーにTitaniumを(ざっくり)ここがこれだよ、と教えてやったことがある
    • Xib2JSの利用
    • 【会場】デザイナーからpsdをもらって、自分で切り貼りしてる
    • 【会場】事前にパーツをリクエストする
    • 【会場】プロトアプリを作って、デザインを調整しつつパーツをもらう
  • 実装の話ではないのですが、今後のtitaniumのロードマップをお聞きできるとうれしいです!たとえば、WindowsPhoneとか・・・
    • WPについては、やりたいというレベルで、スケジュールはきってない。
    • むしろ今はblackberryに注力中。
    • スマホのブラウザで動作するtitanium-webってのを出す予定。
    • あわせて、Titaniumの2.0仕様検討中。
    • 近いリリースでは、Appcelerator マーケットプレースの件。
      • 開発者がmoduleやデザインなどを、売り買いできる場
  • Android3.0で追加された機能(ActionBarやFragment)を使ったアプリの開発についてお聞きしたいです。
    • スケジューリングされていません。未定。
  • 効率的なデバッグ方法など教えていただきたいです。
    • デバッガがstudioにあるべよ
    • 増井さんの例として、ロジック部分を先にnode.jsで作ってユニットテスト、その後Titaniumへ組み込む、というのをやった(これは変態すぎる・・・w
    • drillbitは遅くてうーん
  • Titaniumの認定試験、単体では実施しないですか?
    • 日本では単体実施の予定はない
    • そもそも、めちゃくちゃ難しいから覚悟しろ(合格80点で、増井さん81点・・・)

Android3.0の話と、認定試験の話が衝撃的すぎました・・・Android、力入れてほしいなぁ。。。

回答後、自分はお話ばかりしていた気がします。
ここでは書けない気がするのですが、実情に近い話含め貴重なお話をありがとうございました。

次は黙々しまくるのにも参加してみたいです。
増井さん、DNPソーシャルリンクのみなさん、ありがとうございました。

webviewなAndroidアプリでFlashを使っている時に、backgroundに回った時にFlashを中断(音や動画の停止)する方法

Android2.2以上であれば、WebView内でもFlashなコンテンツが利用できます。
以下のように、WebViewの設定を実施する必要があります。

public class WebViewApl extends Activity {
...
  WebView wv = new WebView(this);
  // Flash等のプラグインを有効にする
  wv.getSettings().setPluginState(WebSettings.PluginState.ON);
...
}

ここで、たとえば HOMEボタンの押下等でアプリを中断するときに、Flash等WebViewの動作自体も止めたくなります。
たとえば、Flash内でBGM等の音声が流れているとして、backgroundに回った時には止めたい、とか。

ActivityのonPauseで、再度 setPluginState(WebSettings.PluginState.OFF)しても反映されず、、、。
かなり困っていたのですが、こんな感じで制御できました。

@Override
protected void onPause() {
  try {
    WebView.class.getMethod("onPause").invoke(wv);
  }
  catch (...) {
  }
}
@Override
protected void onResume() {
  try {
    WebView.class.getMethod("onResume").invoke(wv);
  }
  catch (...) {
  }
}

当たり前ではありますが、WebViewのonPauseを呼ぶことで制御できました。
Activity内のWebViewであることをキチンと意識しないとなぁ。。。

titanium の AdMaker モジュール作ってみました(Android用) #titaniumjp

タイトルの通りですが、TitaniumのAdMakerモジュールを作ってみました。
AdMakerの提供している、AndroidSDKを利用します。
(というか、そういう外部提供SDKを組み込んだ、Tiモジュールを作るのを試したかった、という裏目的)


harukazepc/TiAdMaker4Android - GitHub

(動作確認:2011/8/15時点, AdMakerSDK1.1)

もしよろしければご利用いただき、なにかあればフィードバックいただければと思います。

簡単な利用方法

モジュールの設定
  1. モジュール一式をダウンロードする
    1. 上記のgithubのDownloadsから、一式をダウンロード
    2. dist/modules/android/tv.harukaze.ti.admaker.android/0.1/lib を作成
  2. AdMakerのSDKを配置する
    1. AdMakerの配信者向け管理画面(AdMaker Publisher)から、AndroidSDKをダウンロード
    2. SDK(.jar)を先ほど作った/libへ配置
  3. 自信のTitaniumプロジェクトへ組み込む
    1. modulesディレクトリを自分のプロジェクトのtopへ配置(Resourcesの並びです)
    2. tiapp.xmlに以下を追加
<modules>
    <module version="0.1">tv.harukaze.ti.admaker.android</module>
</modules>
広告の呼び出し
  1. 以下のように呼び出して利用する
var tiadmakerandroid = require('tv.harukaze.ti.admaker.android');

// set site_id (from admaker's console)
tiadmakerandroid.setSiteId(site_id);
// set zone_id (from admaker's console)
tiadmakerandroid.setZoneId(zone_id);
// set ad_url (from admaker's console)
tiadmakerandroid.setAdUrl(ad_url);

// create admaker view
var admakerView = tiadmakerandroid.createAdMakerView({bottom:0});

window.add(admakerView);

その他

  • AdMakerさん、お世話になっております!おかげさまで、無料広告モデルが成り立っています。
    • みなさんもぜひ導入検討してみてはいかがでしょうか?
  • iPhone用には下記があるようですね。(個人的には未確認)
  • AdMakerのSDKは、モジュールに含めない形にしています。
    • AdMakerさんのものなので。ライセンスもわからなったですし。。。
  • Titaniumモジュール書けたー!Androidだけど!
    • てか、モジュールの構成もiPhone/Androidで違うな、、、まぁそうならざるを得ないんだろうけど。
  • Titaniumたーのーしーい

a2sd - Android2.2以上での、アプリのSDカード保存対応

Androidの2.2以上では、アプリ側で対処することで、SDカード等外部記憶媒体へアプリを保存・移動することができます。

App Install Location

ただ、2.1以下でも動くアプリで、2.2以上ならSD移動可とする、というのは若干テクニックが必要。

この対応は、 AndroidManifest.xml 上で

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

を指定するのだけど、さらに、

  • android:minSdkVersion で、実行可能なOSを指定
  • ビルド時のターゲットを「API Level 8」とする
    • なぜなら、構文上 installLocation が導入されたのは、2.2(API Level 8)からなので。

という対応になります。


で、Titaniumでの開発時にも対応したい、と。

うーん、、、ビルド時のターゲット指定の方法がわからん・・・

と思ってたら、本家Appcelerator Developer Blog内で紹介されていました。。。wikiに反映していただけないだろうかw

Installing Android apps to the SD card

 <android ...>
   <tool-api-level>8</tool-api-level>
   <manifest android:installLocation="auto" ...>
      <uses-sdk android:minSdkVersion="4" />
   </manifest>
 </android>

こんな感じ。

もし、AndroidManifest.xml をカスタマイズしている(platform/android/AndroidManifest.xml)場合は、そちらで android:installLocation や android:minSdkVersion を指定ですかね。AndroidManifest.xmlが優先されるようなので。

アプリ開発後のプロモーション(レビューサイト)

アプリをリリースした後、それを多くの人に知ってもらわないと、DL/利用してもらえないですよね。
(AndroidMarketは、結構 検索してDLされる印象・実績もありますが・・・)

そんなとき、これまで一番見返りの大きかったのは、レビューサイトでの掲載です。
レビューサイトを見てる人、レビューサイトのtwitterアカウントをフォローしている人、そのRTを見ている人、と広がり、掲載日にはDL数がかなり違います。

というわけで、iPhone/Androidのレビューサイトをば。
個人的効果の評価もあります。

レビューには以下の種類があります。

  1. 依頼:運営者からのレビューを依頼するタイプ
  2. 寄稿:自ら アプリ内容について説明したものを寄稿するタイプ
  3. リリース:プレスリリースを受け付けるタイプ

個人的に意外だったのは、寄稿タイプ(開発者自ら説明)でもユーザの反応は良好だったりします。

Androidアプリのレビューサイト

*サイト *運営元 *ターゲット層 *依頼/寄稿/リリース *効果(主観)
OCTOBA 株式会社オクトバ とがりぎみ 依頼
アンドロイダー&ROIDER 株式会社トリワークス 一般 依頼
andronavi NEC BIGLOBE 中間 依頼(直接コンタクト)
appliko(アプリコ) OCN 中間?女性? 依頼
meetroid 株式会社ベストクリエイト 一般? 依頼?(meetroid@telfee.jp)
週アスPLUS 株式会社アスキー 一般 依頼
AppMax 株式会社ライブドア 依頼?寄稿?
アンドロイド−ル 株式会社ヴィーナスブロードキャスト 女性 寄稿?

iPhone(iOS)アプリのレビューサイト

*サイト *運営元 *ターゲット層 *依頼/寄稿/リリース *効果(主観)
AppBank 株式会社GT-Agency 一般〜とがりまで 依頼
iPhone研究室 個人運営 とがりぎみ? 寄稿
meeti 株式会社ベストクリエイト 一般? 依頼?(info@meet-i.com)
MACお宝鑑定団 ユーザーグループ とがりぎみ リリース
これがiPhoneクオリティ! 個人運営 とがりぎみ 依頼/寄稿
Applieあっぷりぃ ngi group株式会社 寄稿/リリース
週アスPLUS 株式会社アスキー 一般 依頼
iPhone女史 個人運営? 女性 依頼/寄稿
iPhone女子部 株式会社都恋堂 女性 リリース

Default@2x.png をsubversionで管理できない

という問題。微妙にはまる。

Default@2x.png を add しようとすると、

% svn add Default@2x.png
svn: warning: 'Default@' not found

そんなファイルは確かにない・・・そういう解釈か。

どうやら、@(アットマーク、atmark)を含む場合は、最後に@を付けると良いらしい。

% svn add Default@2x.png@
A (bin) Default@2x.png

参照元はこちら

© harukazepc️