BroggerとTwitterの連携「FeedBumer」





今回はプログラミングとは関係ないですが、FeedBumerを使ってブログの更新をTwitterなどのSNSに自動で投稿する方法について書いていこうと思います。



アカウント作成

まず下記サイトにてFeedBumerのアカウントを作成を行います。

https://accounts.google.com/ServiceLogin?service=feedburner&continue=https%3A%2F%2Ffeedburner.google.com%2Ffb%2Fa%2Fmyfeeds



上の画像の欄に自分のブログのURLを入力し「Next」ボタンを押します。
下記の画面になるまで「Next」ボタンを押します。


「Clickthroughs」にチェックし「Next」ボタンを押します。
これでアカウント登録は完了です。


Twitterと連携



上記の「Socialize」タブをクリックします。



上記の画面で連携の設定を行います。

まず、「Add a Twitter account」をクリックし、Twitterのアカウント情報を入力します。これでBloggerとTwitterの連携は完了ですが、細かい設定について記述していきます。


Post content

ツイートのフォーマットを設定します。

Title only: タイトルのみツイートします。
Title and Body: タイトルと本文をツイートします。
Body only: 本文のみツイートします。



Hash tags

ツイートにハッシュタグを付けるか否かを設定します。

Don`t add any hash tags: ハッシュタグを付けない。
Create hash tags from item categories: カデコリからハッシュタグを作成、設置



Additional text

ツイートに文字を追加する。

Add: 追加する文字を入力します。
beginning of the post: 最初に文字をつける。
end of the post: 最後に文字をつける。



Item limit

一度にいくつの投稿をツイートするかを設定。



Item order

ツイートの並び順を設定。

publish date: 投稿日順
their order in the feed: フィード順。



Keyword filter

指定したキーワードが含まれる投稿のみツイートするように設定。

a category: カテゴリを検索対象とする。
the title: タイトルを検索対象とする。
the body: 本文を検索対象とする。
the whole item: 投稿全体を検索対象とする。



最後に「Activate」ボタンをクリックして完了です。





前記事:Bloggerでプログラミングを綺麗に表示する「SyntaxHighlighter」
http://taku-note.blogspot.jp/2013/11/syntaxhighlighter.html




[簡単Androidアプリ] Android SDKのインストール





前記事:Eclipseのインストール
http://taku-note.blogspot.jp/2014/12/eclipsepleiades-all-in-one.html



ここではAndroid SDKのインストール方法について解説していきます。




Android SDK

Android SDKとは、Googleが無償で公開しているもので、Androidアプリを開発するたに必要なソフトウェアをまとめたパッケージです。主に以下のもので構成されています。

  • コンパイラ、デバッガ
  • ライブラリ
  • デバイスドライバ、
  • ドキュメント
  • サンプルコード
  • エミュレータ



Android SDK-Download

早速下記サイトでダウンロードしましょう。


ここで注意して欲しいのは、もしEclipseのインストールをすでに終えている場合には、サイト上部にある「Download Eclipse ADT」というボタンを押さないでください、サイト下部にある「VIEW ALL DOWNLOADS AND SIZES」をクリックし、「SDK Tools Only」から選択しましょう。

もし「Download Eclipse ADT」からダウンロードすると、またEclipseをダウンロードすることになり、時間がかかってしまします。Eclipseをダウンロードをしていない人はこれでもいいですが、EclipseのダウンロードはPleiades All In Oneパッケージを利用することをおすすめします。またEclipseのダウンロードについては前記事にて解説しています。



Android SDK-Install

続いてインストールを行います。
ダウンロードしたexeファイルを開くと、インストールが開始されます。



「Next」ボタンを押します。



JDKの確認が行われます。終了したら「Next」ボタンを押します。



インストールする場所を指定します。お好きなディレクトリを指定し「Next」ボタンを押してください。




スタートメニューに登録するかどうかです。登録したくない場合は「Do not create shortcuts」にチェックし「Install」ボタンを押しましょう。インストールが開始されます。


「Finish」ボタンを押し、インストール終了です。



Android Library-Install

インストールを終えるとSDKマネージャーが立ち上がるので、これを使ってライブラリをインストールします。

インストールするものは下記のものです。


Toolsファルダ

お好きなAPIのパッケージ「Android 4.0.3(API 15)」など

Extrasフォルダ


以上のものにチェックを入れ、右下にある「Install 〇〇 package」ボタンを押します。

次の画面で、右下にある「Accept All」にチェックし、「Install」ボタンを押します。

たくさんチェックを入れた場合は結構時間がかかってしますので、コーヒーでも飲みながら気長に待ちましょう。

インストールが終わると終了です。



次記事:[Androidアプリ] プロジェクトの作成からHello Worldテキストの出力まで
http://taku-note.blogspot.jp/2014/12/android-hello-world.html




Eclipseのインストール「Pleiades All in One」




ここでは「Pleiades All in One」でのEclipseのインストールについて記述していきます。

Pleiades All in Oneとは、Windows向けのプログラミング言語別パッケージであるEclipse及び便利なプラグインがセットになったものです。元から日本語化されたものがダウンロードでき、これひとつダウンロードするだけで様々なプログラミング言語を扱えるのでとても便利なパッケージです。

では早速下記サイトからダウンロードしましょう。

http://mergedoc.sourceforge.jp/





ダウンロードしたいバージョンを選択します。




さーここでどれをダウンロードしようか迷うと思うので簡単に説明しようと思います。


Pleiades All in One Platform
高速に動作する軽量化パッケージです。必要なプラグインだけを導入したい方におすすめです。


Pleiades All in One Ultimate
Java、C/C++、PHP、Python開発者向けの全部入りパッケージです。高機能ですが重たいです


Pleiades All in One Java
Java開発者向けのパッケージです。


Pleiades All in One C/C++
C/C++開発者向けのパッケージです。


Pleiades All in One PHP
PHP開発者向けのパッケージです。


Pleiades All in One Python
Python開発者向けのパッケージです。


どちらかを選択しダウンロードし解凍しましょう。
ダウンロードには結構時間がかかりますので、コーヒーでも飲みながらゆっくりと待ちましょう。

解凍するとpleiadesフォルダ内の、eclipseフォルダにeclipse.exeがありますのでダブルクリックで実行しましょう。



実行するとワークスペースを作成するディレクトリを聞かれるので、好きなディレクトリを指定してください。




正常に起動できればOKです。
これでインストール完了です。

次回はAndroid SDKのインストールについて書いていきたいと思います。



前投稿:Androidアプリの開発方法

次投稿:[Androidアプリ]Android SDKのインストール





[簡単Androidアプリ] Androidアプリの開発方法




Androidアプリの大まかな開発手順は


開発環境の構築

プログラミング

エミュレータ又は実機での実行

デバッグ(修正)

公開



という手順で行っていきます。



開発環境の構築

Androidアプリに必要な準備は主に以下のものです。


JDKのインストール

Eclipseのインストール

AndroidSDKのインストール

Windowsの設定

Android Plug-inのインストール

Androidエミュレータの作成(実機がある場合は実機の設定)



アプリを作る前から大変そうですが、開発環境の構築は一度やるだけでよいので我慢しましょう。次回はこの開発環境の構築について詳しく見ていきます。



Programming

プログラミングを行う際のおおまかな手順は


EclipseでのAndroidプロジェクトの作成

Eclipseでのソースコードの記述

Eclipseでのビルド



です。基本的なプログラミングの手順と同じです。またEclipseや、Android Studio といった統合開発ソフトを使用することで簡単にAndroidアプリを作ることができます。
簡単にと言いましたが、プログラミングを行うため最低限Androidプログラミングの勉強は必要です。



エミュレータでの実行

AndroidSDKはエミュレータを付属しています。これを使うと簡単にパソコン上でアプリを実行することができますが。パソコンの性能が低いと起動がとても遅くなったり、エラーが出たりするので、実機を持っていればそれで実行するほうが好ましいでしょう。





[VuforiaでARアプリ] 「Video Playback Sample」 に動画を追加 [Androidアプリ]




サンプルプログラムのビルドや開発環境については前の記事
前回:http://taku-note.blogspot.jp/2014/10/eclipsevuforia.html






まず、サンプルプログラムの中に入っている「VideoPlayback.java」を編集します。


「VideoPlayback.java」

VideoPlayback 65行目辺り
「NUM_TARGETS」に動画の数を入力
今回は追加する動画を「HYOUSHI」とします。


// Movie for the Targets:
    public static final int NUM_TARGETS = 3; //追加コード
    public static final int STONES = 0;
    public static final int CHIPS = 1;
    public static final int HYOUSHI = 2; //追加コード


VideoPlayback 156行目辺り
「mMovieName」に新しい動画のファイル名を指定します。

        mMovieName[STONES] = "VideoPlayback/VuforiaSizzleReel_1.m4v";
        mMovieName[CHIPS] = "VideoPlayback/VuforiaSizzleReel_2.m4v";
        mMovieName[HYOUSHI] = "VideoPlayback/Hyoushi.wmv"; //追加コード


VideoPlayback 256行目辺り
サムネイルテクスチャを追加します。これは動画が再生される前に画面に表示する画像です。

// We want to load specific textures from the APK, which we will later
    // use for rendering.
    private void loadTextures()
    {
        mTextures.add(Texture.loadTextureFromApk(
            "VideoPlayback/VuforiaSizzleReel_1.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk(
            "VideoPlayback/VuforiaSizzleReel_2.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk(
                "VideoPlayback/Hyoushi.png", getAssets()));  //追加コード
        mTextures.add(Texture.loadTextureFromApk("VideoPlayback/play.png",
            getAssets()));
        mTextures.add(Texture.loadTextureFromApk("VideoPlayback/busy.png",
            getAssets()));
        mTextures.add(Texture.loadTextureFromApk("VideoPlayback/error.png",
            getAssets()));
    }



次に「VideoPlaybackRenderer.java」を編集します。


「VideoPlaybackRenderer.java」

VideoPlaybackRenderer 73行目辺り

private float videoQuadTextureCoordsTransformedStones[] = { 0.0f, 0.0f,
            1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, };
private float videoQuadTextureCoordsTransformedChips[] = { 0.0f, 0.0f,
            1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, };
private float videoQuadTextureCoordsTransformedHyoushi[] = { 0.0f, 0.0f,
            1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, }; //追加コード


VideoPlaybackRenderer 531行目辺り

if (imageTarget.getName().compareTo("stones") == 0)
                currentTarget = VideoPlayback.STONES;
            else  if (imageTarget.getName().compareTo("chips") == 0)
                currentTarget = VideoPlayback.CHIPS;
            else  if (imageTarget.getName().compareTo("動画を移したいモデルビュー名") == 0)
        currentTarget = VideoPlayback.HYOUSHI;


VideoPlaybackRenderer 647行目辺り

if (imageTarget.getName().compareTo("stones") == 0)
                    GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle,
                        2, GLES20.GL_FLOAT, false, 0,
                        fillBuffer(videoQuadTextureCoordsTransformedStones));
                else if (imageTarget.getName().compareTo("chips") == 0)
                    GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle,
                        2, GLES20.GL_FLOAT, false, 0,
                        fillBuffer(videoQuadTextureCoordsTransformedChips));
                else if (imageTarget.getName().compareTo("動画を移したいモデルビュー名") == 0)
                    GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle,
                        2, GLES20.GL_FLOAT, false, 0,
                        fillBuffer(videoQuadTextureCoordsTransformedHyoushi));


VideoPlaybackRenderer 862行目辺り

if (target == VideoPlayback.STONES)
        {
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedStones[0],
                videoQuadTextureCoordsTransformedStones[1],
                videoQuadTextureCoords[0], videoQuadTextureCoords[1], mtx);
            videoQuadTextureCoordsTransformedStones[0] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedStones[1] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedStones[2],
                videoQuadTextureCoordsTransformedStones[3],
                videoQuadTextureCoords[2], videoQuadTextureCoords[3], mtx);
            videoQuadTextureCoordsTransformedStones[2] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedStones[3] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedStones[4],
                videoQuadTextureCoordsTransformedStones[5],
                videoQuadTextureCoords[4], videoQuadTextureCoords[5], mtx);
            videoQuadTextureCoordsTransformedStones[4] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedStones[5] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedStones[6],
                videoQuadTextureCoordsTransformedStones[7],
                videoQuadTextureCoords[6], videoQuadTextureCoords[7], mtx);
            videoQuadTextureCoordsTransformedStones[6] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedStones[7] = tempUVMultRes[1];
        } else if (target == VideoPlayback.CHIPS)
        {
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedChips[0],
                videoQuadTextureCoordsTransformedChips[1],
                videoQuadTextureCoords[0], videoQuadTextureCoords[1], mtx);
            videoQuadTextureCoordsTransformedChips[0] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedChips[1] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedChips[2],
                videoQuadTextureCoordsTransformedChips[3],
                videoQuadTextureCoords[2], videoQuadTextureCoords[3], mtx);
            videoQuadTextureCoordsTransformedChips[2] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedChips[3] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedChips[4],
                videoQuadTextureCoordsTransformedChips[5],
                videoQuadTextureCoords[4], videoQuadTextureCoords[5], mtx);
            videoQuadTextureCoordsTransformedChips[4] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedChips[5] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedChips[6],
                videoQuadTextureCoordsTransformedChips[7],
                videoQuadTextureCoords[6], videoQuadTextureCoords[7], mtx);
            videoQuadTextureCoordsTransformedChips[6] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedChips[7] = tempUVMultRes[1];
        }
         else if (target == VideoPlayback.HYOUSHI)     //追加コード
        {
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedHyoushi[0],
                videoQuadTextureCoordsTransformedHyoushi[1],
                videoQuadTextureCoords[0],
                videoQuadTextureCoords[1], mtx);
            videoQuadTextureCoordsTransformedHyoushi[0] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedHyoushi[1] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedHyoushi[2],
                videoQuadTextureCoordsTransformedHyoushi[3],
                videoQuadTextureCoords[2],
                videoQuadTextureCoords[3], mtx);
            videoQuadTextureCoordsTransformedHyoushi[2] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedHyoushi[3] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedHyoushi[4],
                videoQuadTextureCoordsTransformedHyoushi[5],
                videoQuadTextureCoords[4],
                videoQuadTextureCoords[5], mtx);
            videoQuadTextureCoordsTransformedHyoushi[4] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedHyoushi[5] = tempUVMultRes[1];
            tempUVMultRes = uvMultMat4f(
                videoQuadTextureCoordsTransformedHyoushi[6],
                videoQuadTextureCoordsTransformedHyoushi[7],
                videoQuadTextureCoords[6],
                videoQuadTextureCoords[7], mtx);
            videoQuadTextureCoordsTransformedHyoushi[6] = tempUVMultRes[0];
            videoQuadTextureCoordsTransformedHyoushi[7] = tempUVMultRes[1];
        }



これで動画の追加は完了です。

モデルデータセットを変更したい場合は以下のコードを編集、追加します。

VideoPlayback 632行目辺り

// データセットをロード:
        if (!dataSetFITPamph.load("追加したいデータセット名.xml",
            STORAGE_TYPE.STORAGE_APPRESOURCE))  //編集箇所
        {





サンプルプログラムのビルドや開発環境については前の記事で
前回:http://taku-note.blogspot.jp/2014/10/eclipsevuforia.html






参考:https://developer.vuforia.com/forum/faq/android-how-do-i-add-another-target-video-playback-sample















[VuforiaでARアプリ] VideoPlaybackSampleをeclipseでビルド [Androidアプリ]




eclipseとvuforiaで、AR動画のサンプルを試したのでメモ
まずは、開発環境から・・・


以下にて「Android-Vuforia SDK」と、Sampleをダウンロード

Android-Vuforia SDK
https://developer.vuforia.com/resources/sdk/android

Sample
https://developer.vuforia.com/resources/sample-apps/features




SDKを解凍すると「samples」というフォルダがあるので、その中にさっきダウンロードしたSampleを全部突っ込む。


eclipseにてダウンロードしたsampleをインポートする。


eclipseの「ウィンドウ-設定-java-ビルド・パス-クラスパス変数」内で、Vuforia SDKに入ってた「Vuforia.jar」を追加。その時名前は「QCAR_SDK_ROOT」にする。


これで実行できると思いきや、どうやらAndroid NDKがないと動かないらしいので、以下から「Android NDK」をダウンロード。適当なディレクトリに入れ、パス通し。詳しくは以下の参考さいとで。

Android NDK
https://developer.android.com/tools/sdk/ndk/index.html

Android NDK参考
http://technobrain.seesaa.net/article/246790219.html


次に、「Cygwin」のインストール。どうやらeclipseでコンパイルする前にCygwinでコンパイルするらしい、先にコンパイルして生成しておくファイルが有るとか何とか、詳しいことは知らん。

Cygwin
https://cygwin.com/install.html

Cygwin参考
http://win.just4fun.biz/%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB/Cygwin%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89.html



インストールが終わったら、Cygwinでコンパイルする。
まず、「cd」コマンドでサンプルプロジェクトがあるディレクトリに移動し、「ndk-build]コマンドでビルド。

ここまでのことで詳しくは以下のリンクで
https://developer.vuforia.com/resources/dev-guide/step-1-setting-development-environment-android-sdk


これで、やっと実行できる 笑








次回はこのサンプルプログラムに自分の好きな動画を追加していきたいと思います。

次回:http://taku-note.blogspot.jp/2014/11/vuforia-video-playback-sample.html