Android - cam.setPreviewDisplay(titulaire) en cours d'exécution dans IOError

Je suis en train d'utiliser l'image de l'appareil photo dans le cadre de live wallpaper.

Dans le Moteur que j'ai déclaré, j'ai ce code:

public class Class extends WallpaperService
{
Camera cam;
@Override
public void onCreate()
{
super.onCreate();
cam = Camera.open();
}
//...
@Override
public Engine onCreateEngine()
{
return new CubeEngine(cam);
}
class CubeEngine extends Engine
{
Camera cam;
CubeEngine(Camera cam)
{
this.cam=cam;
}
//...
@Override
public void onDestroy()
{
if (cam != null)
{
cam.stopPreview();
cam.setPreviewCallback(null);
cam.release();
cam = null;
}
super.onDestroy();
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height)
{
try
{
cam.setPreviewDisplay(holder);
cam.startPreview();
}
catch (IOException e)
{
e.printStackTrace();
}
super.onSurfaceChanged(holder, format, width, height);
}
@Override
public void onSurfaceCreated(SurfaceHolder holder)
{
super.onSurfaceCreated(holder);
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder)
{
if (cam != null)
{
cam.stopPreview();
cam.setPreviewCallback(null);
cam.release();
cam = null;
}
super.onSurfaceDestroyed(holder);
}
//...
}
}

cam est une Caméra qui a été déclarée comme Appareil photo.open();

Lorsque je l'exécute j'obtiens: java.io.IOException: setPreviewDisplay failed

Je suis maintenant obtenir cette exception:

    07-26 00:12:18.399: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.419: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.439: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.459: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.479: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.509: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.529: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.549: WARN/CameraService(1357): Overlay create failed - retrying
07-26 00:12:18.569: ERROR/CameraService(1357): Overlay Creation Failed!
07-26 00:12:18.609: WARN/System.err(4104): java.lang.RuntimeException: startPreview failed
07-26 00:12:18.609: WARN/System.err(4104):     at android.hardware.Camera.startPreview(Native Method)
07-26 00:12:18.609: WARN/System.err(4104):     at com.petrifiednightmares.transparentphone.main.GenericaCamera.surfaceChanged(GenericaCamera.java:29)
07-26 00:12:18.609: WARN/System.err(4104):     at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:687)
07-26 00:12:18.609: WARN/System.err(4104):     at android.service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:749)
07-26 00:12:18.619: WARN/System.err(4104):     at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:984)
07-26 00:12:18.619: WARN/System.err(4104):     at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61)
07-26 00:12:18.619: WARN/System.err(4104):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-26 00:12:18.619: WARN/System.err(4104):     at android.os.Looper.loop(Looper.java:143)
07-26 00:12:18.619: WARN/System.err(4104):     at android.app.ActivityThread.main(ActivityThread.java:4293)
07-26 00:12:18.629: WARN/System.err(4104):     at java.lang.reflect.Method.invokeNative(Native Method)
07-26 00:12:18.629: WARN/System.err(4104):     at java.lang.reflect.Method.invoke(Method.java:507)
07-26 00:12:18.629: WARN/System.err(4104):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-26 00:12:18.629: WARN/System.err(4104):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-26 00:12:18.629: WARN/System.err(4104):     at dalvik.system.NativeStart.main(Native Method)
  • Je pense que vous allez avoir à ajouter un peu plus de code, de sorte que nous pouvons voir l'ensemble de l'installation de la caméra dans la classe que vous utilisez cette dans.
  • Yep, vous aurez besoin de montrer plus de code. Par exemple, comment l'avez-vous créer la surface?
  • J'ai mis plus de code. C'est ma première incursion dans le développement android, de sorte s'il vous plaît laissez-moi savoir si je fais vraiment des erreurs stupides. 🙂
  • Bien que j'aimerais en faire des événements de configuration un peu différemment la seule chose que je vois qui manque, c'est le réglage de la caméra de la taille de l'aperçu. Je serai curieux de voir si le surfaceview de le papier peint poignée de la caméra aperçus. Ne pense pas que ce soit une bonne idée, mais les sons comme un projet intéressant.
  • Ouais c'est la chose que je n'étais pas sûr à ce sujet. Je n'ai pas vu tous les fonds d'écran animés qui prennent avantage de la caméra et a décidé d'écrire une petite application comme une preuve de concept (pourrait évoluer vers une véritable AR app). Une grande possibilité est que les papiers peints ne peut tout simplement pas gérer extraits de caméra (peut-être une volonté délibérée de se déplacer par les développeurs android pour prévenir l'excès de l'utilisation de la batterie?)
  • Trop fatigué pour essayer et exécuter cela, j'ai créé un live wallpaper et ajouté dans la caméra de code, l'appareil photo n'était pas avec un tampon d'erreur, j'ai donc forcé à utiliser push tampons et puis il a échoué avec une exception de pointeur null dans un privé onUpdateSurface appel. Avoir à penser à ce un peu.

InformationsquelleAutor Razor Storm | 2011-07-26