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)

広告

最終更新:2010年07月20日 16:19