どうもみなさんこんにちは、harukinでございます。
『Tasker』というAndroidアプリがありますが、現在5.0β版が進行中です。
その5.0での追加機能の一つに動画再生機能があります。
image

ポインターで示してる奴
これを活かして、動画プレーヤー(GUIでファイル選択して再生)を作ってみました。
image

こんな感じ

みんなで作ってみよう
勿論Taskerですのでだれでも簡単に作ることが出来ますよー!
1 必要な要素について考える
動画プレーヤーということですが、動画を再生することだけには留まりませんよね?
再生、停止、再生位置調整、スキップ、ファイル選択などなど色々な要素が絡んできます。
今のところ(beta5)で私が実現可能としたのは再生、停止、ファイル選択のみになります。後のビルドで変数が追加されたらその時には追記しようと思います。
今回はシンプル(?)にこんな
image

基本的なファイル選択と再生のみを採用した物を作ろうと思います。

開始
image

色々項目がありますが、ハイライトされている要素だけを考えてください。
上から、
 1.UI表示
 2.ファイルマネージャーで使うフォルダー内リスト作成
 3.移動したフォルダー数を記憶する変数作成
 4.移動したフォルダーを記録する配列作成
となっております。
2の作業では、配列Fileに/sdcard/の中身を全部保存します。この配列内の要素がファイルマネージャーに表示されます。
3の作業はフォルダーをタップしたときに1から数字が増えていきます。
4の作業はフォルダーをタップしたときにタップしたフォルダーのリンクを保存します。
 memo 各変数の動きの説明

  sdcard/test/test2

   というフォルダ階層があるとき....
  File→sdcardフォルダ内のあらゆるファイルを配列で表示
  Arrayn→1
  Oldfile→'/sdcard'

 testフォルダをタップすると

  File→sdcard/testフォルダ内のあらゆるファイルを配列で表示
  Arrayn→2
  Oldfile→'/sdcard','/sdcard/test'

 さらにtest2をタップすると
  
  File→sdcard/test/test2フォルダ内の(ry
  Arrayn→3
  Oldfile→'/sdcard','/sdcard/test','/sdcard/test/test2'

①ファイル選択
今回はMenuを使います。

初めのタスク実行時にFile配列にある要素が表示されます。
SourceをVariable Arrayにして、Variableに%FileでOKです。
ファイルタップ時のスクリプトは下です。
image

一覧にすると、
 1.タップした要素がファイルかフォルダかを識別、変数Filetypeに保存
 2.タップした要素名とFiletype(ファイルかフォルダか)をトーストで出力(無視しておけ)
 3.もし、タップした要素がフォルダーなら...
 4.File配列を消す
 5.タップした要素(フォルダー)内のあらゆるファイルをFile配列に出力
 6.変数Arraynに1を足す
 7.Oldfile配列にタップした要素を保存
 8.又は...(2を満たさないとき、すなわちフォルダーでないとき)
 9.タップした要素がファイルなら....
 10.もしタップした要素の文字に[指定の文字]が含まれるなら...
 11.タップした要素をビデオとして開く
 12.Playと通知表示

鬼門となるのが4.と10.です。
4は、たとえば現在の階層にファイルが10個ある場合に移動先が5個だとします。すると移動した場合に上5つは更新されますが下5つは継承されてしまうのです。これは、ファイルを配列として扱う上でどうしようもない点です。
10は、ここに来る時点でファイルが突破した制御はファイルであるということだけです。つまり、このまま動画を再生させた場合にpng画像やapkファイルなどが動画として読み込まれてしまいます。これを防ぐために、
image

独自に拡張子指定したったww
いやぁこれどうすればいいのかわからなかったんですよね(笑)気にしなくても良いのかもしれないですけど。
ところで、フォルダーを深くまで行ったはいいものの、戻りたい。
そこで右下の戻るボタンの出番ですよ。
奴のスクリプトはこちら↓
image

上から
 1.変数Arraynを-1する
 2.File配列を消去する
 3.変数Arraynを使ってOldfile配列から要素を呼び出しその要素のあらゆるファイルをFile配列に保存

この3が意味不明だと思います。
上でのmemoを思い出して欲しいのですが、Oldfileの配列には過去にタップしたフォルダが保存されています。実は、これらは全て%Oldfile(数字)でナンバー付けされており、この数字を入力することで配列の任意の値を取り出すことが出来るのです。
そして、タップする毎にタップしたフォルダが保存され、数字を入れることにより取り出せる。つまり、この数字を扱うのがArrayn変数であり、この変数を利用して前のフォルダに戻ることが可能になります。
例 3つ目のフォルダを開いているときにArrayn変数を-1し、%Oldfile(%Arrayn)とすると一つ前のフォルダを呼び出し以下略。

②再生ボタン
三つありますが、現在は真ん中の再生ボタンしか動作しません...
ElementVideoControlのタスクのToggleを利用することで再生と一時停止を交互に切り替えることが出来ます。

③動画再生
ここが動画再生の本体です。ただ、この本体にはシーク機能もポーズ機能もプレイもセレクトさえもありません。
なので、AutoPlayにチェックだけを入れておきましょう。

以上で動画プレーヤーは完成です。
是非やってみてください!
酷い説明でごめんなさい.....w
わからないことがあればコメントがあればその常更新していきますのでよろしくおねがいします。