Flex、AIR、Java、Androidなど

Posts Tagged ‘java

1/27 20:02 ソース、zipファイル修正。
1/28 12:10 ソース、sipファイル修正。詳しくはzipファイル内のreadme.txtに記載。

Nexus Sが届きましたのでとりあえずざっと作ってみました。強制終了したりもあると思いますが多目にみて下さい。w
連絡くれたら自分の手持ちの端末で再現するかどうかやってみて、できれば直します。うちのNexus Sだと動いてるんですが・・・。

とりあえず実機がある方は上のQRコードかここからアプリ落として動かしてみてください。apk置いといてもいいのですがエミュレーターではメイン画面すら開けないほど重いのでやめときます。
動いてますか?瀬戸デ部な方々に手伝ってもらってFPSのチェックをしたのですが、IS03だと遊べないレベルかもしれません。Xperiaでギリ、Desireとやや遅くらいかも。まあパフォーマンスのことは私に聞かれてもわかんないのでこれで進めますね。
サンプルになるほど出来は良くないですが、とりあえずソースまるごと公開します。
まず、AndEngineとOpenFeintを前回の記事を見ながら使えるようにして下さい。ソースのZIPも公開しますが、OpenFeintのIDがないと強制終了すると思うんで実際に動かしてみたい方はID取って下さい。無料ですぐもらえます。
あとはガリガリ書いていくだけ。なるべく分かりやすいように変数や関数は名前付けてます。落とす前に見たいという方の為に貼っときます。長いですし横が入りきらないんでお手持ちのテキストエディタにでも貼りつけてみて下さい。
とりあえず何点かポイント?を。

とりあえず画面は下層からEngine、Scene、Layerで構成されている。Layerはシーン上に複数置くこともできるし、一枚だけでも良い。Scene、LayerへはどこからでもgetScene().getTopLayer()とかでアクセス可能。
Layer上に画像から生成したオブジェクト(Sprite)やテキスト等を置くときには準備が必要。画像の場合はTextureRegionを作ってそれをTextureに配置、それからEngineのTextureManagerにTextureを登録。こっちにもちょっと書いてます。
毎フレーム毎の処理を登録するのはscene.registerUpdateHandler(IUpdateHandler updateHandler)で。
アニメーション処理は〇〇Modifierが担当。AndEngineに同梱のドキュメント読むべし。
Sprite生成時に同時にListenerを登録してnewできるが、getEngine().getScene().getTopLayer().registerTouchArea(Sprite);しないと反応しないので注意。
画像はできるだけ軽く。8bitで書きだす
処理入れるごとにFPSチェックする。すぐ重たなるので。パーティクルとか大丈夫なん?
女の子に100万DLの自作アプリ見せる → はて (・_・”)?、 3日で作ったてきとーゲーム → +.d(・∀・*)♪゚+.゚。、はおおげさでもとりあえず話ふくらます出発点くらいにはなる!モバゲーとかみんなやってるしね。

Javaのソースファイルは3つだけです。
InitialActivityFrame.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361package biz.stachibana.android.Hige;

import java.io.IOException;

import org.anddev.andengine.audio.music.Music;
import org.anddev.andengine.audio.music.MusicFactory;
import org.anddev.andengine.audio.sound.Sound;
import org.anddev.andengine.audio.sound.SoundFactory;
import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.shape.IShape;
import org.anddev.andengine.entity.shape.modifier.AlphaModifier;
import org.anddev.andengine.entity.shape.modifier.FadeInModifier;
import org.anddev.andengine.entity.shape.modifier.LoopShapeModifier;
import org.anddev.andengine.entity.shape.modifier.SequenceShapeModifier;
import org.anddev.andengine.entity.shape.modifier.IShapeModifier.IShapeModifierListener;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.opengl.texture.Texture;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
import org.anddev.andengine.ui.activity.LayoutGameActivity;
import org.anddev.andengine.util.Debug;
import org.anddev.andengine.util.modifier.IModifier;

import android.content.Intent;
import android.net.Uri;

import com.openfeint.api.OpenFeint;
import com.openfeint.api.OpenFeintDelegate;
import com.openfeint.api.OpenFeintSettings;
import com.openfeint.api.ui.Dashboard;

public class InitialActivityFrame extends LayoutGameActivity {

    private static [...]

AndEngineを使ってゲームを作って(iPhoneのを移植)しようとしているのですが、エミュレーターだとFPSが出なくてどうにもならないので順番を変えて先にOpenFeintを組み込んでみます。
一番面倒な世界ハイスコアランキングやSNSへの投稿等が簡単にできるので、ゲームが作り易くなると思います。
◆ プロジェクト作成
まず、EclipseでAndroidプロジェクトを作成し、andengine.jarをビルドパスに追加します。ゲーム画面は恐らくBaseGameActivityでしょうから、起動時に呼ばれるActivityをBaseGameActivityに変更し、IGameInterfaceに定義されているメソッドを追加します。(BaseGameActivity extends BaseActivity implements IGameInterfaceなので。詳しくはBaseGameActivityにカーソル合わせてF3)この時点でのソースは以下。
123456789101112131415161718192021222324252627282930package com.hoge.AndEngineAndOpenFeintSample;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.ui.activity.BaseGameActivity;

import android.os.Bundle;

public class GameActivity extends BaseGameActivity {

    @Override
    public Engine onLoadEngine() {
        return null;
    }
   
    @Override
    public void onLoadResources() {
   
    }
   
    @Override
    public Scene onLoadScene() {
        [...]

色々な広告配信サービスが出てきて、開発者にはうれしいですね。
今回、Adlantisさんの広告を入れてみようと色々やってみたのですが、組み込み方のページにXMLレイアウトファイルを使った方法しかなかったので、Javaのコード中で動的に追加したりできるようやってみました。
途中までは上記の組み込み方のページに図入りで詳しく書かれていますのでそちらを見た方が早いと思います。
何故か広告のViewの高さが取れないのでそこをdipを使ってやるだけなんですけどね。とりあえず広告のView自体はXMLで書いたのを管理画面からダウンロードして下さい。こんな感じのですね。
<?xml version="1.0" encoding="utf-8"?>
<jp.Adlantis.Android.AdlantisView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.hoge.AdlantisSampleWithinJavaCode"
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:gravity="center"
/>
これをレイアウトフォルダの放りこんで、あとはManifestにパーミッションと独自のユーザーIDを管理画面からコピペ。
Avtivity等に貼り付けるときのaddViewの引数にWRAP_CONTENT使わずにdipで調整、これだけです。コードは以下。
package com.hoge.AdlantisSampleWithinJavaCode;

import jp.Adlantis.Android.AdlantisView;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

@Override
[...]

30 11月, 2010

IS03 Service Killerを製作中。

Posted by: tachibana In: Android| プログラミング

AUさんからIS03が発売開始されましたが、どうもバッテリの持ちが良くないらしい。
Xperiaの時も同様なことがあって、その時はAutomatic Task Killer等のタスクキラーを導入することによりバッテリーの減りが軽減されたという嬉しい意見を沢山頂きました。
ということでIS03でもAutomatic Task Killerは使って頂けるのかなぁと思って様子を見ていたのですが、ユーザーの方から送っていただくログを見てるとSHARPさんやらAUさんのパッケージのプロセスがやけに多く走っている様子。
Automatic Task Killerは最初の起動時にインストールされているアプリを検索してリストアップするのですが、仕様上全てのアプリを探し出すことは出来ず、特に出荷時から入っているアプリのプロセスは取れないことが多いです。
そこでそれらのプロセスの全殺しを試みるアプリを作ってみました。Automatic Task Killerと併用して頂いても問題ありませんし、補助的に使っていただくといいかも。でも下の注意点はよく読んでご利用下さい。
◆機能
端末スクリーン消灯時にリスト上でスターを付けたプロセスとサービスが走っている場合、強制終了を試みます。スターを付けるのが可能なパッケージは以下。一般的なアプリの強制終了にはAutomatic Task Killerをご利用下さい。
com.pv.pvmtpservicestart
com.pv.pvmtpservicestartl
com.pv.wmdrmservice
com.kddi.android.auoneidsetting
com.kddi.android.fota
com.kddi.android.mainte.AppMainteLockNoAuth
com.kddi.android.mailprovi
com.kddi.android.providers.mailprovidata
com.kddi.android.providers.prldata
com.kddi.android.providers.securitydata
com.kddi.android.WebFiltering
jibe.android.activity
jp.co.fsi.fs1seg
jp.co.sharp.android.capability
jp.co.sharp.android.felicalockcontrol
jp.co.sharp.android.FMtransmitter
jp.co.sharp.android.imageplugin
jp.co.sharp.android.mainte.AppMainteSptl
jp.co.sharp.android.majorupdate
jp.co.sharp.android.messaging
jp.co.sharp.android.pedometer
jp.co.sharp.android.profile.app
jp.co.sharp.android.securitylock
jp.co.sharp.android.sendcmailservice
jp.co.sharp.android.setimage
jp.co.sharp.android.soundmemo
jp.co.sharp.android.timerapps
jp.co.sharp.android.WISPr”;
◆注意点
バックグラウンドで走っているプロセスやサービスを強制終了させると3Gが入らなくなる、端末のフリーズ、メールが自動受信できない等の症状がでる時があります。大抵は再起動すれば元に戻りますが端末がどうなっても作者は責任を持ちませんので自己責任でご利用下さい。
不具合発生時は詳細をご連絡頂ければどれを殺したことによる不具合か推察してアドバイスできるかもしれません。お詳しい方はご自分でスターを付けたり外したりしながら試してみて下さい。
◆リリースノート
初期バージョン
+とりあえずリリース。
v0.1.1
+端末再起動時にリストが初期化されるバグの修正。
+強制終了できるアプリを追加。
+”jp.co.sharp.android.timerapps”をリストから除外(恐らくアラームのプロセスなので)。
ダウンロードはこちらから。

Android OSでは放っておくと意図しないアプリケーションが開いたままになることがあり、それが端末の動きのスピードを下げたり、バッテリーの消耗を招いたりすることがよくあります。このアプリケーションはそれらのアプリケーションを端末がスリープに入る際に強制終了するアプリケーションです。
簡単な設定を行えばあとは不要なタスクの心配をする必要はありません。面倒な手動でのタスク終了の機会を減らすことができます。もちろん、開発者やエキスパートの方向けに詳細な設定も可能なようになっており、以下のような設定が可能です。
・細かな通知オプション
・詳細なログの記録
・インストールされたアプリケーションの感知と自動マーク
・タスク終了の遅延、遅延時間
・目には見えない裏側のプロセスを終了
・最前面で起動中のアプリは終了しない
バグレポート、ご要望ありましたらお気軽にご連絡下さい。


Categories

 

2017年3月
« 4月    
 12345
6789101112
13141516171819
20212223242526
2728293031  

About

Author: tachibana

  • ちょっとしたことはTwitterに書いています。こっちはアプリの公開等の時に更新されます。
  • 最近はもっぱらJavaとObjective Cです。AS3は飽きました。
  • スクリプト言語ではPerlが好きでしたが最近はGAE/Jで何でもやってます。
  • Linuxは自宅サーバー建てるのがやっとのレベルです。前の会社で何日も徹夜してやったのはいい思い出です。
  • アプリへのご要望などご意見等ありましたらお気軽にご連絡下さい。

Alternative content here