[Android] Honeycomb Android 3 のシステムバーの高さは48px

2011/11/14

測ったところ、Honeycomb Android 3 のシステムバーの高さは48pxです。

だから、ディスプレイがWXGA (1280 x 800)だったら、
コンテンツの高さは752pxになります。

LINEで送る
Pocket

[Android] Sony Tablet S をmacから開発可能にする方法

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:

LINEで送る
Pocket

[AS3] ローカルのムービーファイルを読み込もうとして、セキュリティエラー

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

LINEで送る
Pocket

[Android] Galaxy Tab用にビデオをエンコードしたら「このビデオはモバイル用に最適化されていません」と出る

2011/10/22

こんにちは。きんくまです。
AndroidのGalaxy Tab(10.1でない)用にビデオをエンコードして、
Flashで読み込んだら画面に
「このビデオはモバイル用に最適化されていません」
と出ました。

このままだと格好悪いので、どうしたものかと調べてみました。
そしたらいい感じの記事がありました。
モバイルデバイス用Flash Player 10.1向けのビデオの配信

ビデオはH264にしました。
各オプションは下のキャプチャのようにしてみました。
ビデオの幅、高さが中途半端なのは、案件用なので気にしないでください。
どうやらさきほどのページによると、なるべく小さいサイズで出力した方がいいみたいです。
なので、ビデオ本体を半分のサイズにして、スクリプトで表示するときにスケールを2倍にしてみました。
そしたら、さきほどのエラーは表示されなくなりました。

encode1

encode2

LINEで送る
Pocket

[jsx] Photoshop のフィルターとマスクをとる

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);
        }
    }
}
LINEで送る
Pocket

[Android] ネットワークのRSSを拾ってパース

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 ArrayList articles;
	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

LINEで送る
Pocket

[Qt] Mac OS lion(10.7) と Qt 4.8(beta)

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です。

LINEで送る
Pocket

ページトップへ戻る