iappli.lib.io
クラス SPControl

Object
  上位を拡張 iappli.lib.io.SPControl

public class SPControl
extends Object

スクラッチパッドへデータの保存、または、データを復元します。
SPOBject を実装したオブジェクトを渡す事により、 そのオブジェクトのデータをスクラッチパッドへ保存したり、復元します。

また、メディアデータをサーバから取得してスクラッチパッドへ保存し、 次回以降、保存したメディアデータを取り出せるようにします。

 【例】
 public class Test extends IApplication {
   public void start() {
     Sample s1 = new Sample(100);
     Sample s2 = new Sample(200);
     try {
       // *** s1 と s2 のデータを保存する
       int pos = 0;
       pos = SPControl.write(s1, pos, 0);
       pos = SPControl.write(s2, pos, 0);
     } catch (IOException e) { }
 
     Sample s3 = new Sample(0);
     Sample s4 = new Sample(0);
     try {
       // *** s1 と s2 のデータを s3 と s4 に復元する
       int pos = 0;
       pos = SPControl.read(s3, pos, 0);
       pos = SPControl.read(s4, pos, 0);
     } catch (IOException e) { }
   }
 }
 
 class Sample implements SPObject {
   public Sample(int a) {
     this.a = a;
   }
 
   // Sampleで使うデータを復元する
   public int readObject(DataInputStream in) throws IOException {
     a = in.readInt();
     return 4;
   }

   // Sampleで使うデータを保存する
   public int writeObject(DataOutputStream out) throws IOException {
     out.writeInt(a);
     return 4;
   }
   private int a = 0;
 }
 


メソッドの概要
static byte[] mediaRead(int pos, int num, int index, String url)
          スクラッチパッドから画像や音楽などのメディアデータを読み込みます。
static int read(SPObject o, int pos, int num)
          スクラッチパッドからデータを読み込みます。
static int write(SPObject o, int pos, int num)
          スクラッチパッドへデータを書き込みます。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

write

public static int write(SPObject o,
                        int pos,
                        int num)
                 throws java.io.IOException
スクラッチパッドへデータを書き込みます。

パラメータ:
num - 書き込むスクラッチパッドの番号を指定します。0 〜
pos - 書き込むデータ位置を指定します。0 〜
o - SPObjectを実装したオブジェクトを指定します。
戻り値:
書き込み完了位置を返します。 続けて書き込みする場合に戻り値を渡してください。
例外:
java.io.IOException - 書き込みに失敗した場合に返される例外です。

read

public static int read(SPObject o,
                       int pos,
                       int num)
                throws java.io.IOException
スクラッチパッドからデータを読み込みます。

パラメータ:
o - SPObjectを実装したオブジェクトを指定します。
pos - 読み込むデータ位置を指定します。0 〜
num - 読み込むスクラッチパッドの番号を指定します。0 〜
戻り値:
読み込み完了位置を返します。
例外:
java.io.IOException - 読み込みに失敗した場合に返される例外です。

mediaRead

public static byte[] mediaRead(int pos,
                               int num,
                               int index,
                               String url)
                        throws java.io.IOException
スクラッチパッドから画像や音楽などのメディアデータを読み込みます。
データがスクラッチパッドに存在しなかった場合(サイズが0の場合)、 サーバからHTTP経由でデータを取得し、スクラッチパッドに保存します。
HTTPは接続を3秒×5回リトライします。
ConnectionExceptionが発生したらアプリの再起動を促してください。

スクラッチパッドには、サイズ(2 Byte) データ(n Byte)・・・ の順で保存されます。
      (pos)
      ↓
 ・・・|サイズ,データ|サイズ,データ|サイズ,データ|・・・
       |  index = 0  |  index = 1  |  index = 2  |・・・
 
 【実行例】
 private Image im1 = null;
 private Image im2 = null;

 try {
   // イメージ1
   byte data[] = SPControl.mediaRead(0, 0, 0, getSourceURL()+"actor1.gif");
   MediaImage m = MediaManager.getImage(data);
   m.use();
   im1 = m.getImage();
   
   // イメージ2
   data = SPControl.mediaRead(0, 0, 1, pt.getSourceURL()+"actor2.gif");
   m = MediaManager.getImage(data);
   m.use();
   im2 = m.getImage();
 } catch (ConnectionException e1) {
   // 再起動を促す
 } catch (IOException e) { }

  :
 g.drawImage(im1, 0, 0);
 g.drawImage(im2, 100, 100);
  :
 

本メソッドを実行するには、 ADFの UseNetwork が指定されている事が条件となります。

パラメータ:
pos - 初期データ位置を指定します。0 〜
num - スクラッチパッドの番号を指定します。0 〜
index - データの通番を指定します。0 〜
url - データが無かった場合のダウンロード先URLを指定します。 ここには、http:// から指定してください。 (例:IApplication.getSourceURL()+"images/actor.gif") IApplication.getSourceURL()は、ADF の PackageURL から取得されます。
戻り値:
読み込んだデータのbyte配列を返します。 そのまま、MediaImage や MediaSound にて利用できます。
例外:
java.io.IOException - 読み込みに失敗した場合に返される例外です。

Copyright ITmarks Inc. All rights reserved.