「カメラライトを点ける方法(Xperia)」の編集履歴(バックアップ)一覧に戻る

カメラライトを点ける方法(Xperia) - (2010/07/20 (火) 16:19:43) のソース

[[Top]] > [[開発]] > カメラライトを点ける方法(Xperia)

*カメラライトを点ける方法(Xperia)

Xperiaのカメラライトをつけるプログラム
非公開APIを使う。
http://www.androidjavadoc.com/1.0_r1_src/android/os/IHardwareService.Stub.htmlを参照

1.ライトをつける
  IHardwareService hardwareService = IHardwareService.Stub.asInterface(ServiceManager.getService("hardware"));
  hardwareService.setFlashlightEnabled(true); // trueでつける,falseで消す

2.必要なクラスの実装
・ServiceManager.java
  package android.os;
  public class ServiceManager {
      public static IBinder getService( String serviceName ) {
          return null;
      }
  }
・Binder.java
  package android.os;
  import java.io.FileDescriptor;
  import java.io.PrintWriter;
  public abstract class Binder extends Object implements IBinder {
   public void attachInterface(IInterface owner, String descriptor) {
   }
   public static long clearCallingIdentity() {
  	 return 0;
   }
   protected void dump(FileDescriptor filedescriptor, PrintWriter printwriter) {
   }
   protected void finalize() {
   }
   public static void flushPendingCommands() {
   }
   public static int getCallingPid() {
  	 return 0;
   }
   public static int getCallingUid() {
  	 return 0;
   }
   public int getConstantData(Parcel outData) {
         return 0;
   }
   public static IBinder getContextObject() {
  	 return null;
   }
   public static long getLastGcTime() {
   	 return 0;
   }
   public static void joinThreadPool() {
   }
   public void linkToDeath(IBinder.DeathRecipient deathrecipient, int i){
   }
   protected  boolean	onTransact(int code, Parcel data, Parcel reply, int flags){
  	 return true;
   }
   public boolean pingBinder() {
  	 return true;
   }
   public IInterface queryLocalInterface(String descriptor) {
  	 return null;
   }
   public static void	restoreCallingIdentity(long l) {
   }
   public boolean transact(int code, Parcel data, Parcel reply, int flags) {
  	 return true;
   }
   public boolean unlinkToDeath(IBinder.DeathRecipient recipient, int flags) {
  	 return true;
   }
  }
・IHardwareService.java
  package android.os;
  import java.io.FileDescriptor;
  public interface IHardwareService extends IInterface{
    public void cancelVibrate();
    public void enableCameraFlash(int i);
    public boolean getFlashlightEnabled();
    public void setFlashlightEnabled(boolean flag);
    public void vibrate(long l);
    public void vibratePattern(long[] al, int i, IBinder ibinder);
    public static class Stub extends Binder {
      public IBinder asBinder() {
        return null;
      }
      public static IHardwareService asInterface(IBinder obj) {
        return null;
      }
      public boolean onTransact(int code, Parcel data, Parcel reply, int flags) {
        return true;
      }
      @Override
      public void dump(FileDescriptor fd, String[] args) throws RemoteException {
        // TODO 自動生成されたメソッド・スタブ
      }
      @Override
      public String getInterfaceDescriptor() throws RemoteException {
        // TODO 自動生成されたメソッド・スタブ
        return null;
      }
      @Override
      public boolean isBinderAlive() {
        // TODO 自動生成されたメソッド・スタブ
        return false;
      }
    }
  }

[[Top]] > [[開発]] > カメラライトを点ける方法(Xperia)
**広告