FC2ブログ
    07 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 09

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Java】カメラで写真を撮った後の処理 

    金曜日です!今週ずっと眠かった大坂です。

    今週もJavaのお題。
    では早速。カメラで撮った画像をそのまま使ったらOutOfMemoryが発生したときのお話。
    流れは「画像サイズ情報を取得」⇒「スケールを決定」⇒「オプションの設定」⇒「画像を保存」といった感じ。
    ではコード。ちょっと長めです。
      // カメラで撮影後画像生成後に呼ばれる
    private Camera.PictureCallback mPictureListener = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
    if(data != null) {
    try {
    // オプションの取得
    BitmapFactory.Options options = new BitmapFactory.Options();
    // 画像情報のみを取得
    options.inJustDecodeBounds = true;
    // 画像の読み込み(実際には読み込まず情報のみ)
    BitmapFactory.decodeByteArray(data, 0, data.length, options);
    // 画像データをスケールする係数を決定する
    int bitmap_size = 0;
    if((options.outWidth * options.outHeight) > 1000000) {
    //1Mピクセル超えてる場合は小さく
    double out_area = (double)(options.outWidth * options.outHeight)
                     / 1000000;
    bitmap_size = (int) (Math.sqrt(out_area) + 1);
    } else {
    //小さい場合はそのまま
    bitmap_size = 1;
    }

    // 画像を実際に読み込むモードに変更
    options.inJustDecodeBounds = false;
    // 画像データをスケールする係数の設定
    // (係数に2を設定したら縦横のサイズが1/2となる。例:1024×720⇒512×360)
    options.inSampleSize = bitmap_size;
    // 画像の読み込み
    Bitmap tmp_bitmap = BitmapFactory.decodeByteArray(data, 0,
                      data.length, options);
    // 縦横の長さを取得
    int width = tmp_bitmap.getWidth ();
    int height = tmp_bitmap.getHeight ();
    // 画像のスケール変更や回転に使用(今回は回転)
    Matrix matrix = new Matrix ();
    // 画像を90°回転させる
    matrix.postRotate(90);
    // Bitmapの作成
    Bitmap bitmap = Bitmap.createBitmap(tmp_bitmap, 0, 0, width,
                    height, matrix, true);
    // 画像の保存
    String filePath = Environment.getExternalStorageDirectory().getPath()
    + File.separator + "sample"
                   + File.separator + "sample.jpg"
    FileOutputStream fos = new FileOutputStream(filePath);
    bitmap.compress(CompressFormat.JPEG, 100, fos);

    // クローズ処理
    fos.close();
    // ビットマップの解放
    tmp_bitmap.recycle();
    bitmap.recycle();

    } catch(FileNotFoundException fnfe) {
    fnfe.printStackTrace();
    } catch(IOException ioe) {
    ioe.printStackTrace();
    }
    }
    }
    };


    このような感じで、メモリ対策をしつつ指定した場所にファイルが保存されます。
    画像サイズをあまりに小さくしたりすると表示したときに荒くなったりするので、
    適当に数字をいじって調整してみてください!

    他にもオプションでメモリ対策するものがあるので色々試してみるといい感じになっていくはずです!
    一例を書いておきます。
      // システムメモリ上に再利用性の無いオブジェクトがある場合に勝手に解放
    options.inPurgeable = true;
    // 現在の表示メトリクスの取得
    DisplayMetrics dm = getResources().getDisplayMetrics();
    // ビットマップのサイズを現在の表示メトリクスに合わせる
    options.inDensity = dm.densityDpi;

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】現在作成中ゲームの反省点 

    水曜日担当の秋山です。

    Unityで作成中の玉ころがしゲームの完成が近づいてきました。
    今回は、初心者的な反省点(memo)を書いてみました。

    GUITexture
     スマートフォンのサイズにより、配置箇所やサイズが異なるので使わないようにする。
     ・スコア画面などで使用していたが、形のずれがひどいことに・・・
     ・対策として3DテキストとGameObjectを利用したUIを作成。
      (NGUIを購入したので、今後は使い方を覚えなければ・・)

    DontDestroyOnLoad
     最初この存在を知らなかったので1つのScene内で終わらせる用に作っていました・・・
     ◆DontDestroyOnLoadを使用し残すGameObject
     ・スコアやステージ数など引継ぎを前提とするもの。
     ◆残さないないもの
     ・ゲームステージ内のオブジェクト(マップ/カメラ/光源等)

    Blenderからのインポートファイル
     Mbyteになるファイルは作らない。
     →実機で試した所「1Mbyte」ファイル1個あるだけで3分ぐらいロード時間が・・・
      対策としてはパーツで分けてインポートしUnity内で組み立てる。
     モディファイアー等の使用は控える
     →これも重くなります。

    Sceneの呼び出し
     呼び順に注意。
     今現在は下記の形に
     データ作成(DontDestroyOnLoad)→メニュー→ステージセレクト→ステージ→・・・
                             |
                             |→スコアページ

     ステージ中にメニューに戻ることを可能にしています。
     最初、データ作成をメニューに含めていたため、メニューに戻るたびに
     データ作成が行われDontDestroyOnLoad設定のためオブジェクトが増えていくことに・・・

    以上ざっと記載してみました。


    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    都道府県雑学クイズゲームリリース! 

    アプリリリースのお知らせ!

    クイズゲーム「都道府県雑学」公開しました!

    https://play.google.com/store/apps/details?id=com.halcyon.preftrivia

    qr_preftriva.png


    アプリ説明:
    都道府県の雑学クイズです!
    まずは都道府県モードで各都道府県の位置を覚えよう!
    都道府県の位置を覚えたら、県庁所在地、県の花、県の木、県の鳥、特産品、日本酒の各モードで遊んで、都道府県のことを覚えていこう!
    不正解の確認画面では都道府県をタッチすると都道府県の位置を見ながら間違いを確認できるよ!
    ※特産品、日本酒は2種類に絞ってます。間違い、変更のご意見がありましたらご連絡ください!

    Category: Androidアプリ紹介

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】Unity&Orthelloによる2Dゲーム作成③ 

    はい、こんにちわ。坂内です。
    本日の題は「Unity&Orthelloによる2Dゲーム作成其の3」です。

    アニメーションについて、ちょちょっと書いてみます。

    Orthelloには、AnimatingSpriteというものがあります。
    これ、アニメーション用のSpriteっぽいっす。
    オブジェクトとしては、コレ使います。

    では順番に説明をば。(間違えていたら指摘プリーズ!

    ①「Orthello」⇒「Sprite」⇒「Animation」をHierarchyに追加します。
      このAnimationはSpriteのアニメーション自体を管理するもののようです!


    ②今回はこんな感じの適当な絵を用意しました!

     立ち絵・パンチ・キックの3種類のアニメーションです。(適当でスイマセン
     これをまずは前々回の通りSpriteAtlasに読み込みます。
     SpriteAtlasについては前々回の「Unity&Orthelloによる2Dゲーム作成①」を参照。

    ③次に、①で追加したAnimationのInspectorのFramesetsをアニメーションの数設定します。
     今回は「立ち」「パンチ」「キック」の3種類のため、FramesetsにSizeに「3」を設定。
     Sizeに3をセットすることにより、その下にElementsが3個追加されます。
     それぞれのElementsのNameにアニメーション名を設定します。今回は「stand」「punch」「kick」に
     してみます。


    ④各種アニメーションに、どの絵を使うかを指定します。
     ③で作成したElementsのContainerに②で指定したAtlasを指定します。
     それと、スタートフレーム、エンドフレーム(アニメーションのフレームを指定)
     立ちポーズはSpriteAtlasでは、8,9,10,11,12の絵になるので、Start Frameに「8」を、
     End Frameに「12」を指定します。

    ⑤で、アニメーションの指定はスクリプトで「OT.AnimatingSprite("オブジェクト名").Play("アニメーション名");」とすることで動かすことができます。
    using UnityEngine;
    using System.Collections;

    public class PlayerScript : MonoBehaviour {

    void Start () {
    OT.AnimatingSprite("Player").PlayLoop("stand");
    }

    void Update () {

    }
    }


    ⑥では、スペースボタンを押すとキックをするようにしてみましょう。

    void Update () {
    if(Input.GetButtonUp("Jump")){
    OT.AnimatingSprite("Player").PlayOnce("kick");
    }
    }


    なんかそれっぽくなりましたね!

    これ、キックのアニメのあと、止まってしまうけど、もとのStandアニメーションにするのはどうするんだろうか!
    キックのアニメーションが終わったタイミングでうまくスタンドのアニメーションに戻す方法なにかいい方法をお持ちの方教えて下さい!
    ってことで、本日のブログは終了です!

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    Tag: Orthello  Android  ゲーム  2Dゲーム  Unity  Sprite 
    tb 0 : cm 0   

    【Java】着信モードとボリュームが変更された時の検知方法 

    今週も金曜日となりました。大坂です。

    タイトルの通り着信モードとボリュームが変更された時に何か処理したい時の方法です。

    まずは着信モードとボリュームが変更された時の受け取り方法。
    AndroidManifest.xmlに以下を記述
      <receiver android:name="com.example.VolumeReceiver">
    <intent-filter>
    <!-- モードが変更された時の通知を受け取る(サイレントモード⇒マナーモード等) -->
    <action android:name="android.media.RINGER_MODE_CHANGED" />
    <!-- ボリュームが変更された通知を受け取る -->
    <action android:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
    </receiver>

    これで着信のモード変更とボリュームが変更された時の変更を検知して受け取ることができるようになります。

    あとはAndroidManifest.xmlに記述した「com.example.VolumeReceiver」のクラスを作成して変更があった場合の処理を記述するだけです。
    package com.example;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;

    public class VolumeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals("android.media.RINGER_MODE_CHANGED")) {
    //着信モードが変更された時の処理を記述
    } else if(intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) {
    //音量が変更された時の処理を記述
    }
    }
    }

    こんな感じですね。大したことを書かなくても通知を受け取れるもんですね。
    この辺を応用して使えばサイドボタンを押された変更を検知していろいろ作れそうですね。

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】オブジェクトの移動(その1) 

    水曜日担当の秋山です。

    今日はオブジェクトの移動に関して書いてみます。
    基本的すぎる内容ですが、とりあえずMathf.SinやCosを利用した移動からです・・・・
    利用している言語はC#になります。

    オブジェクトの単純な移動に関しては、別記事で紹介しているiTweenを利用したほうが簡単です。
    iTweenを利用しないで反復運動を行う場合を記載します。


    Vector3 start_posi;
    Vector3 move_posi;
    void Start () {
    start_posi = transform.position; //スタート地点を記憶
    }

    void Update () {
    move_posi = new Vector3(0,0,Mathf.Sin(Time.time)); //移動する値を取得
    this.transform.localPosition = start_posi + move_posi; //目的地に移動
    }


    Time.time = ゲーム開始からの時間を返す(読み取り専用)

    これはZ軸上での-1~1の幅で反復移動します。
    ・Unity上での「1」は1m分の移動。
    移動距離を伸ばしたい場合、Mathf.Sinの値に 2や3を掛けると2m,3mと伸ばせます。
    また、運動の向きを反対にする場合、Mathfの値に負の値を掛ければ逆になります。

    円運動を行う場合は以下のパターンなどがあります。
    1) move_posi = new Vector3(Mathf.Cos(Time.time),0,Mathf.Sin(Time.time));
    2) move_posi = new Vector3(Mathf.Cos(Time.time),Mathf.Sin(Time.time),0);

    また、運動の向きを反対にする場合、Mathfの値に負の値を掛ければ逆になります。

    もっと簡単な方法などありそうですが・・・

    とりあえずここまでです。

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    怒涛の2本目リリース!いたずらアプリGagSound(ギャグサウンド)リリースしました! 

    ハルシオンシステム本日怒涛の2本リリース!!

    いたずら効果音アプリ「GagSound」公開しました!

    https://play.google.com/store/apps/details?id=com.halcyon.gagsound

    qr_gagsound.png


    アプリ説明:

    説明
    いたずら好きなあなた!
    そんなあなたにおすすめするのが、GagSound(ギャグサウンド)!
    全20種類の音がボタン一つで鳴らすことができます!
    いたずらに使えそうな音を入れてみました!

    Category: Androidアプリ紹介

    Thread: みんなに紹介したいこと

    Janre: ブログ

    tb 0 : cm 0   

    国旗クイズゲームリリース! 

    アプリリリースのお知らせです!

    国旗のクイズゲーム「国旗天国」をリリースしました!

    国旗から国名を当てるモードか国旗から首都名を当てるモードを選んでゲームスタート!
    10秒以内に4択から答えを選ばないと不正解になるぞ!
    短い時間で答えると点数が多いが、10回間違えるとゲーム終了だ!
    終了時の点数をみんなと競って遊んで、国旗を覚えよう!!

    下記のURLからみんなもダウンロードしてみてね!
    https://play.google.com/store/apps/details?id=com.halcyon.nationalflagquiz

    Category: Androidアプリ紹介

    Thread: ゲーム

    Janre: ブログ

    tb 0 : cm 0   

    【Unity】Unity&Orthelloによる2Dゲーム作成② 

    月曜担当の坂内です。暑い日が続いています。
    倒れないように水分はこまm(ry

    ええと、Orthelloによる2Dゲーム作成第2弾ということで、
    Spriteの移動について簡単に書いていきたいと思います。

    Unityにおける、オブジェクトの基本的な移動は以下になります。

    ◆オブジェクトに必ずついている、Transformコンポーネントのposition
     の値を変更する。
     
     ●gameObject.transform.Translate(new Vector3(1,1,0));
      Translateという命令で引数のVector3方面への移動。
      上記の例だと、x方向に1、y方向に1進めという意味。
     ●gameObject.transform.position = new Vector3(100,0,10);
      transformpositionにVector3の位置を代入。
      gameObjectの場所をVector3の位置に移動。
     などの方法で移動させます。
     
    ◆オブジェクトについている、Rigidbodyコンポーネントに力を加える。
     ●gameObject.rigidbody.AddForce(new Vector3(10,5,1));
      rigidbodyにVector3の力を加える。
     他
     
    となります。

    次に、iTweenを使った、移動方法をば。

    iTweenの基本的な使い方は以下になります。

    iTween.MoveTo(オブジェクト,iTween.Hash(ほにゃらら));
    iTween.MoveFrom(オブジェクト,iTween.Hash(ほにゃらら));
    ◆iTween.MoveAdd(オブジェクト,iTween.Hash(ほにゃらら));
    など。

    ほにゃららのところには直接iTween.Hash()を書く方法と、
    HashTableを作成して書く方法があります。

    (testという名のオブジェクトを移動する場合)

    void Update () {
    // スペースキーをおしたよ.
    if(Input.GetButtonUp("Jump")){
    Hashtable hash = new Hashtable ();
    hash.Add("x",50f);           //①
    hash.Add("time",1f);          //②
    hash.Add("easetype",iTween.EaseType.easeInOutBack); //③
    iTween.MoveAdd(GameObject.Find("test"),hash); //④
    }
    }




    void Update () {
    // スペースキーをおしたよ.
    if(Input.GetButtonUp("Jump")){
    iTween.MoveAdd(GameObject.Find("test")
          ,iTween.Hash("x",50f,"time",1f,"easetype"
          ,iTween.EaseType.easeInOutBack));
    }
    }



    ①移動する座標をx座標50として指定。
    ②移動する時間を1秒として指定。
    ③移動する際の動き方をeaseInOutBackとして指定。
     他にもいろいろな動き方があります。
    ④MoveAddにて、上記の動きを追加。
     MoveAdd Hashの動きを追加。
     MoveTo Hashの場所へ移動。
     MoveFrom Hashの場所から今の場所へ移動。(?)
    という感じで使用できます。

    この際、注意として、Orthelloを使用していると、transformpositionとは別に、
    OTSpriteのpositionが存在しています。
    移動した際には、iTweenまたはtransformでの移動後に、以下のコードを追加しないと
    うまく動かない場合があります!(動く時とうまく動かない時の違いがわからない・・・)

    OT.Sprite("オブジェクト名").position = オブジェクト.transform.position;

    以上でUnityにおけるオブジェクトの動き方メモ終了!!

    さぁ、これでゲーム作成に1歩近づきましたね!

    (使い方間違えている等の指摘ありましたらお願いします!)

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    Tag: iTween  Orthello  Android  ゲーム  2Dゲーム  Unity  transform  position  Rigidbody 
    tb 0 : cm 0   

    【Java】onClickとUI変更のお話 

    はい、もう金曜日ですね。大坂です。

    今週もJavaでのアプリ作成のお話です。

    クイズアプリなどを作るときに解答ボタンを押して「○」を出して、次の問題になったら「○」を消すみたいなことやりたい時に

    @Override
    public void onClick(View v) {
    // 「○」の画像を描画
    imageView.setImageResource(R.drawable.maru);
    sleep(1000); // 1秒待つ
    nextQuestion(); // 次の問題を作成
    // 「○」の画像を消す
    marubatu.setImageDrawable(null);
    }
    public synchronized void sleep(long msec) {
    try {
    wait(msec);
    } catch(InterruptedException e) {
    e.printStackTrace();
    }
    }

    とかやっても何も反応してくれません・・・。
    調べてみるとUIはUIスレッドでしか変更できないようです。へぇ~(無知)

    では、どうするのかというと。Handler#postを使用します。

    @Override
    public void onClick(View v) {
    // ハンドラの生成
    final Handler handler = new Handler();
    new Thread(new Runnable() {
    public void run() {
    handler.post(new Runnable() {
    @Override
    public void run() {
    // 「○」の画像を描画
    imageView.setImageResource(R.drawable.maru);
    }
    });
    sleep(1000); // 1秒待つ
    handler.post(new Runnable() {
    @Override
    public void run() {
    // 「○」の画像を消す
    imageView.setImageDrawable(null);
    }
    });
    }
    }).start();
    }

    public synchronized void sleep(long msec) {
    try {
    wait(msec);
    } catch(InterruptedException e) {
    e.printStackTrace();
    }
    }

    といった感じですね。上の処理だと「○」を1秒だしてそのあと「○」が消えるという動作になります。
    この後に次の問題を出す処理を書いていけばクイズのが作れます!きっと。

    勉強不足を実感した瞬間でしたorz

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】BlenderからUnityへのインポート 

    水曜日担当の秋山です。

    現在3Dオブジェクトの作成はBlenderというツールを利用し作成しています。
    UnityでもGameDrawというAssetを利用すれば3Dオブジェクトの作成や編集が可能です。
    ただし、無料版ではかなりの機能制限があります。
    Blenderは機能が豊富でかつ無料です。これを利用する手はありません。

    今回は3DオブジェクトのBlenderからUnityへのインポートについて説明します。

    手順としては元となるオブジェクトを用意します。
    今回は練習用に作成した、てんとう虫?を利用します。
    tentoumusi01.png

    これを普通に保存した場合「.blend」という拡張子を持つファイルになります。
    「.blend」のファイルではそのままUnityでも利用可能です。
    適用方法は簡単、Unityで作成したProject配下のAssetsフォルダに配置するだけです。

    実際にScene画面に配置してみた画像です。

    tentoumusi02.png

    画像右上の赤丸の箇所「Rotateion」(傾き)の項目で数値が0ではない箇所があります。
    通常のオブジェクトは初期配置ですべて0になるはずですが、Blenderでは「Z軸」が上と認識されており、
    Unity上では「Y軸」が上と認識されます。
    そのため、最初から傾いた状態で表示されます。
    それを修正する場合は、以下の手順です。

    1.UnityにインポートしたBlenderファイルを開きます。

    2.Blenderのビュー上で「3」のテンキーを押し側面画像にし、オブジェクトを選択した後
     キーボードの「R」で回転させます。角度は90度です。

    tentoumusi03.png

    2.その後、画面左下の「オブジェクト」→「適用」→「回転と拡縮」を選択し、保存してください。

    tentoumusi04.png

    実際にUnityの画面を確認すると「Rotation」の数値が0になっています。(Assetsの表示が上向きになります。)

    tentoumusi05.png


    以上、かなり無理やりな手法ですがお試しください。

    別の手としては、Blenderのインポート設定で軸の変換設定が可能ですが、
    これはUnity上で適用されませんでした。こっちが正攻法と思われるがやり方が見つかりません・・・

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】Unity&Orthelloによる2Dゲーム作成① 

    はい、こんにちわ!坂内です。
    現在Unityで2Dゲーム作成中です!

    元はJavaにて作成していたのですが、
    UnityでもAndroid2Dゲームが作成できるということで、
    こちらに移行してみました。

    まだまだ勉強中ですが、自分メモ的に書いていこうと思います。
    使用Frameworkは「Orthello」と「iTween」です!
    と、いうことで、今回はOrthelloの使い方をちょこっと。

    以下設定は、スマホ横ゲームでの設定になります。

    Orthelloの初期設定】
    ①Gameウィンドウのサイズを、854x480に変えておく
    ②Assetストアで、OrthelloをIMPORT
    ③「Orthello」⇒「Objects」⇒「OT」をHierarchyに追加
    20130812_1.png


    ④Hierarchyの「OT」⇒「View」を選択し、Inspectorから以下の値に設定
     Always Pixel Perfect ⇒ チェック
     Pixel Perfect Resolution ⇒ x : 854
      y : 480
     Custom Size ⇒ 240
    20130812_2.png


    ここまでで、基本の設定は終わりです。

    次に使用する絵の設定です。

    まずはAtlasを作成します。
    私はこのAtlas作成には「TexturePackerGUI」というツールを使用しています。
    TexturePackerGUIの使用方法はまたの機会で・・・

    【絵のオブジェクトを表示】
    TexturePackerで作成した、Atlasファイル(png)と、xmlファイル(構成表?)を
     適当なフォルダに突っ込みます
     あ、xmlファイルは、cocos2Dのフォーマットでお願いします。
    20130812_3.png

    ②「Orthello」⇒「Objects」⇒「Sprites」⇒「SpriteAtlas」⇒「SpriteAtlas-Cocos2D」
     をHierarchyに追加
    20130812_4.png

    ③②で追加したSpriteAtlas-Cocos2DのInspectorにて、Textureとして、①で配置したAtlasファイルを選択します
    20130812_6.png


    ④「Orthello」⇒「Objects」⇒「Sprites」⇒「Sprite」をHierarchyに追加
    ⑤④で追加したSpriteのInspectorの、「Sprite Container」に③で設定したAtlasを指定します
    20130812_7.png

    これで絵を表示することが可能になります!
    アニメーションを行う場合は、Spriteの代わりにAnimationSpriteを使用します。
    Animationについては、次回書こうと思います!

    今日はこんな感じ!アニメーション・iTweenでの移動に関してはまた今度です!

    簡単に絵を表示することが可能です!
    あとは、センス!誰かセンス下さい!
    あと、絵書いてくれる方募集です m(_ _)m

    ってことで、本日は終了っす!Orthelloによる2Dゲーム作成ネタとして
    いいネタあるかた是非友達になりましょう!

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    Tag: Java  2Dゲーム  ゲーム  Android  Orthello  iTween  Texture 
    tb 0 : cm 0   

    【Java】暗黙のIntentでギャラリーを呼び出す 

    初めまして、とりあえず金曜担当の大坂です。

    Javaでツールや簡単なゲームを作成しています。(今後Unityもやらないとなぁ・・・)
    今週の火曜日にも「LockPiker」という暇つぶしアプリを公開しました!
    すべての数字と場所の正解を目指して、挑戦した桁数分の数字を選んで解除ボタンを押すだけの単純なゲームですが意外と嵌ります!!是非ダウンロードしてみてください!

    と、挨拶はこの辺にして、私の担当回ではJavaでアプリを作っているときの覚書を記事にしていきます。
    ということで、タイトルの「暗黙のIntentでギャラリーを呼び出す」についてです。

    まずはギャラリーの呼び出し方から。 

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_PICK);
    startActivityForResult(intent, 10); //10はリクエストコード


    これだけでギャラリーのアプリが呼び出せます。便利ですね!
    「intent.setAction(Intent.ACTION_GET_CONTENT);」を使用してもいいのですが、
    エクスプローラやらほかのアプリもいっぱい選択する画面に出てしまい使い勝手が悪かったので、
    画像データを取得するためのアプリを起動する「intent.setAction(Intent.ACTION_PICK); 」を使用しています。

    次に呼び出した後のデータの受け取り方です。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 10 && resultCode == RESULT_OK) {
    try {
    URI imageUri = data.getData();
    InputStream is = getContentResolver().openInputStream(imageUri);
    Bitmap bitmap = BitmapFactory.decodeStream(is);
    is.close();
    }
    }
    }


    受け取ったデータを取得するとURIが渡されるので、ImputStreamを経由してBitmapにしています。
    こんな感じで端末に保存している画像を使用できるわけです。簡単ですね!

    受け取ったデータが大きすぎたりしてOutOfMemoryとか発生する場合は画像を小さくするなどの対策が必要ですが、その辺の話はまたの機会ということで・・・。

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    tb 0 : cm 0   

    ご挨拶 

    初めまして、ハルシオンシステムの秋山です。

    自分は今までゲーム作成をしたことがない初心者ですが、
    現在Unityを利用しカジュアルゲーム作成をしています。
    とはいえ、1本目をずっと開発中ですが・・・

    プログラムはVBAを少しかじった程度でしたので、本当に出来るのか!?と戦々恐々でしたが・・・
    Unityすごいですね~

    プログラム自体、少ししか書かなくてもゲーム作れます!
    Unityを使い始めてから、1ヶ月程たっていますが簡単な玉転がしゲームを今月中に出せそうです。

    自分の回ではUnityの初心者なりに困ったことや情報を記載していこうかと思っています。
    皆様、よろしくお願いいたします。m(_ _)m

    Category: その他日記

    Thread: 日記

    Janre: 日記

    Tag: Unity 
    tb 0 : cm 0   

    ブログはじめました。 

    初めまして、ハルシオンシステムの坂内です!
    本日より毎週 月 水 金 更新(予定)のブログを始めたいとおもいます!

    6月にハルシオンシステムを設立し、早や2カ月!
    (http://halcyon-system.com/index.php)
    Androidアプリを初めて作成し始めてから2カ月もたってしまいました!
    やばいです!やばいです!
    時の流れは早いですね!

    現在以下の6本が世の中に公開されております。(Android専用です)
    是非興味がありましたら、ダウンロードお願いします!m(_ _)m

    ・輝度チェン
    ・スリープチェンジャー
    ・タイムゾーン変換
    ・酒めもり
    ・ZombieDodge
    ・VolumeKeeper

    まだまだ、至らないところもありますが、一生懸命皆様に良いアプリを提供していこうと思っております。

    さて、このブログはというと、もちろんアプリの宣伝もさせて頂こうと思っておりますが、
    Androidアプリ作成を行っている中で、役に立つような開発メモ等を書いていこうと思っております。
    開発日記以外にも、くだらない話題等も書いていこうと思います!
    アプリ開発の皆様に少しでもお役に立てればと思います。(こちらが教えてもらう方ですが・・)
    また、当社アプリに対するご意見や、更改希望、はたまた素敵な情報等がございましたら、どしどしお声かけください!


    以後よろしくお願い致します!

    Category: その他日記

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0