2012年4月27日金曜日

こわいこわい

先日、計算クエストという暗算アプリを出しました。
数日たって思ったよりもダウンロードされないんですが、
この間デベロッパー画面を見てみたら、評価に一つ星がついてました。
その次の日のアプリダウンロード数はゼロ。
こわいこわいこわい、

ちなみにリリースして、1ヶ月位経過しましたが、ダウンロード数は100件くらいで、
アクティブユーザーは半分くらいです。

そして、収入は1ドル未満というひどい状態。
完成させるのに結構時間がかかって、色々画面デザインとかも工夫したのに
この結果とは、これは落ち込みました。

以下でダウンロードできるので、よかったら一つ星アプリを応援してください。

https://play.google.com/store/apps/details?id=jp.Keisan&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwianAuS2Vpc2FuIl0.

2012年4月24日火曜日

Admobでクラッシュした

admobを使って作ったアプリでアクティビティをすぐに切り替えるとクラッシュしていたので、
そのことを書きたいと思います。

ゲームの構成は、

タイトル画面に戻れるように、タイトル画面の用のアクティビティ(1とします)は常に生きている状態

タイトル画面のSTARTをクリックすると他のゲーム用のActivity(2とします)が起動するという感じです。
この後戻るボタンでタイトルに戻るとこのゲームアクティビティのDestroyが呼ばれるという構成です。

で、戻るボタンを押して、すぐにスタートをタッチすると、死んだはずの(2)のonStopが呼ばれずにアクティビティが生きたままになってしまうので、落ちてしまう。(原因はわかりません)

なので、解決方法は、
public class game extends Activity{

    private FrameLayout frameLayout;        // レイアウトを持つ
    private AdView m_Ad;
    @Override
 public void onPause(){
  super.onPause();
  // 広告をviewから切り離す
  frameLayout.removeView(m_Ad);          
 }

 @Override
 public void onRestart(){
  super.onRestart();
  frameLayout.addView(m_Ad);      // レイアウトに貼り付ける
 }

これで、アクティビティをすぐに切り替えても落ちなくなった。

アクティビティを切り替えるようにはできてますが、
一つのアクティビティでゲームを作ったほうがいいのかもと思いました。
個人的メモでした。

2012年4月21日土曜日

admobの広告を画面下に設置する

広告を張らないと無料アプリでは儲からないということで、
admobの導入方法を書きたいと思います。
admobのサインインとかは省略して、導入だけやります(eclipse)。

1.まず、広告を取り入れるプロジェクトのプロパティ→javaのビルドパス→外部jarの追加を選んで、
ダウンロードしたadmobのjarを選択。

2.実行するプロジェクトのAndroidManifest.xml
に以下を追加

<activity
           android:name="com.google.ads.AdActivity"
   android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|
                 smallestScreenSize">
</activity> 

ちなみにandroid:configChangeの項目は、android3.2以上?のバージョンでないと実行できません。
なので、プロジェクトのandroidビルドターゲットのバージョンをそれ以上にセットしてください。
自分は4.0にしました。
後、それだと低いバージョンのosに対して実行できないんじゃないかというのがありますが、
古いバージョンで実行できていれば大丈夫なので、気にする必要はありません。
後、このconfigChangesの設定を入れないと広告が表示されないので必須?です。


3.ソースに広告を乗っけるコードを書く。

自分はゲームを作っているので、activityのソースに直接書きます。
アクティビティを継承したクラスで、

 private GameView view;    // ゲームに使うview
 private AdView m_Ad;      // admobclassをインポートする必要ありatarimae

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  Window window = getWindow();
  window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
  view = new GameView(this);
  // ad生成
  m_Ad = new AdView(this,AdSize.BANNER,ID);      // IDにはアプリ登録番号を入れる
  RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams   ( RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
  lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);    // 下にセットするようにする
  m_Ad.setLayoutParams(lp);
  
  RelativeLayout layout = new RelativeLayout(this);
  layout.addView(view);
  layout.addView(m_Ad);
  m_Ad.loadAd(new AdRequest());    // 広告の表示
  
  setContentView(layout);
 
  // 広告がタッチされたなどの条件を取ります。
  m_Ad.setAdListener(new AdListener(){
         @Override
         public void onDismissScreen(Ad arg0) {
          // TODO Auto-generated method stub
         }
         @Override
            public void onLeaveApplication(Ad arg0) {
        // TODO Auto-generated method stub
       }
       @Override
       public void onPresentScreen(Ad arg0) {
        // TODO Auto-generated method stub
       }
       @Override
       public void onReceiveAd(Ad arg0) {
        // TODO Auto-generated method stub
       }
   @Override
   public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
    // TODO 自動生成されたメソッド・スタブ  
   }
        });
    }

// 消しておく
 @Override
 public void onDestroy(){
  super.onDestroy();
  m_Ad.destroy();
 m_Ad = null;
 }

以上でadmobの広告画面の一番下に表示されると思います。

いままで、admobを使ってみて、最高で1クリック5セントくらいです。
20クリックで1ドル.......(ToT)

おしまい。

2012年4月17日火曜日

パズル作ってます

今テトリスに追加要素を加えたパズルゲームを作っています。
リリース目標は来週の土日まで、前に作ったアプリがぜんぜんだめなので、
今回は少しでも、ダウンロードされるようにがんばりたいです。

最初

個人でandroidアプリを作っています。
androidの収入で食えるくらいまで収益が上がるようにがんばる過程を書きたいと思います。
androidがなくなるまでがんばる予定。