測ったところ、Honeycomb Android 3 のシステムバーの高さは48pxです。
だから、ディスプレイがWXGA (1280 x 800)だったら、
コンテンツの高さは752pxになります。
2011/11/14
こんにちは。きんくまです。
Android 開発でSony Tablet Sをmacから認識できなかったのです。
ググったところ、このページが教えてくれました。
とても役に立つページなのでした。
[Q] Sony Tablet S ADB support
you need to cd to your .android folder (on a mac, this is ~/.android) and then type echo 0x054c > adb_usb.ini Where 0x054c is the vendor id for Sony (I got that by looking at the attached evices in the 'About this mac' preferences)
そんで adb_usb.ini を下のパスから見つけました。
/Users/myacountname/.android/adb_usb.ini
そんで、テキストエディタで開いて、以下の文字列を入力。
0x054c
それで、adbサーバーをリスタートすればおk。
ターミナルから
./adb kill-server ./adb start-server
adbがタブレットを認識してくれて、開発が可能になりました!
USBベンダーidはこういう風にすれば確認できます。
About This Mac > More Info > System Report > Hardware | USB > USB Device Tree > Vendor ID:
2011/10/23
こんにちは。きんくまです。
私は普段Flash Builder(FB)を使って開発しています。
最初に、Flash CS5.5のアプリからswcを書き出して、
FBからそれを読み込む
それでFB上でコンパイルという順です。
それで、ローカルのムービーファイルを読み込もうとして
セキュリティエラーのダイアログが出ました。
ダイアログにはこう書かれていました。
SecurityError: Error #2148: SWF file file:///Users/kinkuma/Documents/temp/main.swf cannot access local resource ./video/samplef4v.f4v. Only local-with-filesystem and trusted local SWF files may access local resources.
ググってみると、解決方法を発見しました。
このページです。
Only local-with-filesystem and trusted local SWF files may access local resources
コンパイラー設定を加えればいいようです。
Project > Properties > ActionScript Compiler > Additional compiler arguments
-use-network=false
これで直すことができました!!
注意
もし、外部swfを使うときは、そのswfたちのネットワークポリシーを揃える必要があります。
追加情報
Flash アプリケーションからも同じ設定項目をすることが可能です。
File > Publish Settings > Local playback security
こんにちは。きんくまです。
AndroidのGalaxy Tab(10.1でない)用にビデオをエンコードして、
Flashで読み込んだら画面に
「このビデオはモバイル用に最適化されていません」
と出ました。
このままだと格好悪いので、どうしたものかと調べてみました。
そしたらいい感じの記事がありました。
モバイルデバイス用Flash Player 10.1向けのビデオの配信
ビデオはH264にしました。
各オプションは下のキャプチャのようにしてみました。
ビデオの幅、高さが中途半端なのは、案件用なので気にしないでください。
どうやらさきほどのページによると、なるべく小さいサイズで出力した方がいいみたいです。
なので、ビデオ本体を半分のサイズにして、スクリプトで表示するときにスケールを2倍にしてみました。
そしたら、さきほどのエラーは表示されなくなりました。
2011/10/20
こんにちは。きんくまです。
Photoshopのフィルターとマスクをとるjsxを書きました。
「Flashに入れるときに一つずつ手で新規レイヤーを作成して、それを下のレイヤーと結合。」
という作業が面倒だったので、以前から欲しかったのでした。
下記を適当なファイル名で保存して、merge.jsxなど
Photoshop > スクリプト
から選択すれば、実行できます。
var doc = app.activeDocument; mergeLayers(doc.layers); alert('merge complete'); function mergeLayers(layers){ var len = layers.length; var parent = layers.parent; var newLayer; for(var i = 0; i < len; i++){ var layer = layers[i]; if(layer.isBackgroundLayer){ continue; } layer.allLocked = false; if(layer.typename == 'ArtLayer'){ newLayer = parent.artLayers.add(); newLayer.move(layer, ElementPlacement.PLACEAFTER); layer.merge(); } else if(layer.typename == 'LayerSet'){ mergeLayers(layer.layers); } } }
2011/10/16
こんにちは。きんくまです。
Androidの開発を調べています。
ネットワーク上のcnet.com RSSをひっぱってきて、
パースしたいです。
javaで配列を動的に扱うのにはArrayListが使えるみたい。
mainActivity.java
package com.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import android.app.Activity; import android.os.Bundle; public class HttpGetDemoActivity extends Activity { private ArrayListarticles; private final String ITEM = "item"; private final String TITLE = "title"; private final String PUB_DATE = "pubDate"; private final String GUID = "guid"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); loadXML(); } private void loadXML() { BufferedReader in = null; String xmlStr = ""; try{ String url = "http://news.cnet.com/8300-1_3-1.xml?categoryId=1999&keywords=Gadget%20news"; HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse responce = client.execute(request); in = new BufferedReader(new InputStreamReader(responce.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while((line = in.readLine()) != null){ sb.append(line + NL); } in.close(); xmlStr = sb.toString(); //System.out.println(page); }catch(Exception e){ e.printStackTrace(); }finally{ if(in != null){ try{ in.close(); }catch(IOException e){ e.printStackTrace(); } } } try{ parseXML(xmlStr); }catch(IOException e){ e.printStackTrace(); }catch(XmlPullParserException e){ e.printStackTrace(); } } public void parseXML (String xmlStr) throws XmlPullParserException, IOException { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); xpp.setInput(new StringReader(xmlStr)); int eventType = xpp.getEventType(); Boolean isItem = false; ArticleData articleData = null; while(eventType != XmlPullParser.END_DOCUMENT){ String xmlNodeName; switch(eventType){ case XmlPullParser.START_DOCUMENT: articles = new ArrayList (); break; case XmlPullParser.START_TAG: xmlNodeName = xpp.getName(); if(xmlNodeName.equalsIgnoreCase(ITEM)){ isItem = true; articleData = new ArticleData(); } if(isItem){ if(xmlNodeName.equalsIgnoreCase(TITLE)){ articleData.title = xpp.nextText(); }else if(xmlNodeName.equalsIgnoreCase(PUB_DATE)){ articleData.pubDate = xpp.nextText(); }else if(xmlNodeName.equalsIgnoreCase(GUID)){ articleData.guid = xpp.nextText(); } } break; case XmlPullParser.END_TAG: xmlNodeName = xpp.getName(); if(xmlNodeName.equalsIgnoreCase(ITEM)){ isItem = false; articles.add(articleData); } break; } eventType = xpp.next(); } } }
ArticleData.java
package com.demo; public class ArticleData { String title; String pubDate; String guid; }
XMLPullParseSample はこのサイトを参考にさせてもらいました。ありがとうございます。
>> Consuming A SOAP Web Service: XmlPullParser Alternative
2011/09/10
こんにちは。きんくまです。
QtはC++のアプリケーションを作りやすくするフレームワークです。
http://qt.nokia.com/title-jp?set_language=ja&cl=ja
Win / Mac の他にSymbianなどの携帯デバイス向けにも作ることができます。
iOS / Androidはできません。
それで、Qtを試してみたところ、ビルドがうまく行きません。
どうやら、Mac OS lionとQtのバージョンがかみ合っていないようです。
最新版Qt4.7.4ではlionは未サポートなのです。
で、lionに合うQtはベータ版の4.8だそうです。
なので、インストールしてみました。
最初に(私のはOSの言語を英語にしちゃってるので、英語メニューになっとります)
Select > Qt menu > Help > Start updater
それでSDK maintenanceToolが立ち上がります。
ラジオボタンから ‘Package manager’ を選択します。
チェックボックスからQt 4.8.0 beta (Desktop) を選択して、
‘Continue’ ボタンを押します。
SDKがインストールされたら、Qt creatorに戻って、
Select > Qt creator > Preferences > Qt4
さきほどのSDKをマニュアルで使えるように登録します。
個別のプロジェクトの設定で
プルダウンの ‘Qt version’ からさきほどの beta SDKが選べるようになっています。
最後にビルドしてみて、エラーが出なければOKです。