1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WM Capture écran Code Java

Discussion dans 'Windev Mobile' créé par redha2010, Fev 27, 2019.

  1. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    Bonjour
    l'utilisation du fonction

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    pour capture sur windev mobile reste possible
    juste sur la version 23
    le code java suivant fait un capture d’écran à utiliser pour les version inf à 23

    Code (Text):
    import android.graphics.Bitmap;
    import android.view.View;
    import android.app.Activity;
    import android.view.Window;
    import java.io.FileOutputStream;
    import java.io.IOException;
    iimport java.io.File;

    public static void capture_ecran()
    {
           try {
            // image naming and path to include sd card appending name you choose for file
            Activity xa = getCurrentActivity();
            Window xw = xa.getWindow();
            View v1 = xa.getWindow().getDecorView().getRootView();
            v1.setDrawingCacheEnabled(true);
            Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
            v1.setDrawingCacheEnabled(false);
            File imageFile = new File("/sdcard/img.png");
     
            FileOutputStream outputStream = new FileOutputStream(imageFile);
            int quality = 100;
            bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
            outputStream.flush();
            outputStream.close();
            } catch (Throwable e) {
            // Several error may come out with file handling or DOM
            e.printStackTrace();
            }
    }
    bonne journée
     
    Tags:
    makni, NACER, Man et 2 autres personnes aiment ça.
  2. makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    svp un vidéo démonstratif !!
     
  3. Isabelle

    Isabelle Well-Known Member

    Inscrit:
    Jan 18, 2018
    Messages:
    378
    J'aime reçus:
    253

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    svp un vidéo démonstratif !!
    Cliquez pour agrandir...
    Tu crois que

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , déjà sympa de donner du code, va perdre son temps à faire une video.
    Mais toi tu peux t'y coller.
     
    makni apprécie ceci.
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    j'ai tester le code sur un vrai smartphone ! mais il ne fonctionne pas ! svp une explication claire !et merci
     
  • Isabelle

    Isabelle Well-Known Member

    Inscrit:
    Jan 18, 2018
    Messages:
    378
    J'aime reçus:
    253
    C'est quoi un faux smartphone ?
    Que veut dire "il ne fonctionne pas" ?
    C'est quoi une explication pas claire.
     
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    comment appeler a ce code java avec windev mobile ? aussi le dépendances ?
     
  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    il faut lire le premier post : ce code a pour les utilsateurs qui utilise les version inf à 23 mobile
    puisque la fonction

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    est disponible sur windev mobile sup = 23

    pour les erreurs du à l'excution du code java je pense que c"est toujours du au chemin du creation du fichier photo sur le stockage du telephonne
    on peut faire qq changement sur le code pour changer et tester le chemin qui pose pas de probleme chez vous

    Code (Text):
    import android.graphics.Bitmap;
    import android.view.View;
    import android.app.Activity;
    import android.view.Window;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.io.File;
    import android.os.Environment;

    public static void Capture1(String tt)
    {
        try {
            String mPath = tt ;
            Activity xa = getCurrentActivity();
            Window xw = xa.getWindow();
            View v1 = xa.getWindow().getDecorView().getRootView();
            v1.setDrawingCacheEnabled(true);
            Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
            v1.setDrawingCacheEnabled(false);
            File imageFile = new File(mPath);
            FileOutputStream outputStream = new FileOutputStream(imageFile);
            int quality = 100;
            bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (Throwable e) {
            // Several error may come out with file handling or DOM
            e.printStackTrace();
        }
    }
     
    et utiliser par exemple

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Code (Windev):
    sDateCapture est une chaîne =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (),"YYYY_MM_DD")+

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (),"HH_MM_SS")
    Capture1(

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    +"/"+sDateCapture +".png")
     
     
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    Bonsoir
    Merci pour votre message! mon question comment appelée a la procedure Java dans windev mobile ?
    Aussi les dépendances de cette procédure lors de générations apk android?

    merci pour votre collaboration!!
     
  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    j'ai tester le code sur un vrai smartphone ! mais il ne fonctionne pas ! svp une explication claire !et merci
    Cliquez pour agrandir...
    tu dis que tu a tester le code sur un smart phone !! comment ?
    ta besoin rien coté dépendances

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    Bonjour ! dans votre capture ! dans la fenêtre FEN_Capture ! il existe un bouton qui contient le traitement pour l'appeler de procédure Globale et la méthode ! merci de partager comment faire l'appeler de méthode Java dans windev mobile !
     
  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    Le traitement est dans le code windev du post 7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    WX1331 apprécie ceci.
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575
    Salut

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    a fourni le code java des fonctions capture_ecran et Capture1
     
    WX1331 apprécie ceci.
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Oui je comprend !
    je veux savoir comment appeler à ce traitement (Capture1) de capture d'écran avec clic sur bouton dans la fenêtre windev mobile ( code de FEN_Capture) ! comment appeler à la procédure java avec windev mobile.
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Oui je comprend !
    je veux savoir comment appeler à ce traitement (Capture1) de capture d'écran avec clic sur bouton dans la fenêtre windev mobile ( code de FEN_Capture) ! comment appeler à la procédure java avec windev mobile.
    Cliquez pour agrandir...
    Il t'a donné la réponse dans le post 7
    Après si tu ne sais pas lire, on ne peut plus rien pour toi.
     
    Isabelle apprécie ceci.
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    bonjour ! ce code faire des captures d'écran seulement sur les fenêtres de l'application qui est en cours d'exaction !
    comment en peut faire des captures d'écran sur d'autres applications ?
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    bonjour ! ce code faire des captures d'écran seulement sur les fenêtres de l'application qui est en cours d'exaction !
    comment en peut faire des captures d'écran sur d'autres applications ?
    Cliquez pour agrandir...
    Oui ce code ne fonctionne que pour l'application en cours
    Sinon sur Android il existe un imprimé écran en utilisant les touches de réglage du son et celui d'allumage de l'appareil.
    Sur Samsung, il existe Game Booster , tu peux même enregistrer une vidéo.
    Après par programmation, je ne sais pas mais il y a pleins d'applications sur Google play.
     
    WX1331 apprécie ceci.
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    Exactement mon objectif c'est de faire des captures d'écran ( comme la méthode de clic sur les touches de réglage du son et celui d'allumage de l'appareil).
    Mais par programmation ! vous avez une idée ?
    Pour faire des captures sur déférente application !
     
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    Comment je peux intégrer ce code java natif ?
    import android.content.Context;
    import android.hardware.display.DisplayManager;
    import android.hardware.display.VirtualDisplay;
    import android.media.Image;
    import android.media.ImageReader;
    import android.media.projection.MediaProjection;
    import android.media.projection.MediaProjectionManager;
    import android.os.Build;
    import android.os.Environment;
    import android.util.DisplayMetrics;
    import android.view.WindowManager;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.nio.ByteBuffer;

    public class ScreenCaptureManager {
    private static final int REQUEST_CODE_CAPTURE_SCREEN = 1001;
    private static final String SCREENCAP_NAME = "screenshot.png";

    private Context context;
    private MediaProjectionManager projectionManager;
    private MediaProjection mediaProjection;
    private VirtualDisplay virtualDisplay;
    private ImageReader imageReader;

    public ScreenCaptureManager(Context context) {
    this.context = context;
    projectionManager = (MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
    }

    public void startScreenCapture() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Intent projectionIntent = projectionManager.createScreenCaptureIntent();
    ((Activity) context).startActivityForResult(projectionIntent, REQUEST_CODE_CAPTURE_SCREEN);
    }
    }

    public void onActivityResult(int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
    mediaProjection = projectionManager.getMediaProjection(resultCode, data);

    DisplayMetrics metrics = new DisplayMetrics();
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    windowManager.getDefaultDisplay().getMetrics(metrics);
    int density = metrics.densityDpi;

    imageReader = ImageReader.newInstance(metrics.widthPixels, metrics.heightPixels, 0x1, 2);
    virtualDisplay = mediaProjection.createVirtualDisplay("ScreenCapture",
    metrics.widthPixels, metrics.heightPixels, density,
    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
    imageReader.getSurface(), null, null);

    imageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
    @Override
    public void onImageAvailable(ImageReader reader) {
    Image image = null;
    FileOutputStream fos = null;
    Bitmap bitmap = null;

    try {
    image = imageReader.acquireLatestImage();
    if (image != null) {
    Image.Plane[] planes = image.getPlanes();
    ByteBuffer buffer = planes[0].getBuffer();
    int pixelStride = planes[0].getPixelStride();
    int rowStride = planes[0].getRowStride();
    int rowPadding = rowStride - pixelStride * metrics.widthPixels;

    bitmap = Bitmap.createBitmap(metrics.widthPixels + rowPadding / pixelStride,
    metrics.heightPixels, Bitmap.Config.ARGB_8888);
    bitmap.copyPixelsFromBuffer(buffer);

    File screenshotFile = new File(Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_PICTURES), SCREENCAP_NAME);
    fos = new FileOutputStream(screenshotFile);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);

    Toast.makeText(context, "Capture d'écran réussie!", Toast.LENGTH_SHORT).show();
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (fos != null) {
    try {
    fos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if (bitmap != null) {
    bitmap.recycle();
    }
    if (image != null) {
    image.close();
    }
    stopScreenCapture();
    }
    }
    }, null);
    }
    }

    public void stopScreenCapture() {
    if (virtualDisplay !=null) {
    virtualDisplay.release();
    virtualDisplay = null;
    }
    if (imageReader != null) {
    imageReader.setOnImageAvailableListener(null, null);
    imageReader.close();
    imageReader = null;
    }
    if (mediaProjection != null) {
    mediaProjection.stop();
    mediaProjection = null;
    }
    }
    }

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    /

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575
    Salut,
    Déjà c'est une classe contenant plusieures fonctions
    Pour les classes il y a Rubén Sánchez Peña qui a fait un exemple mais j'ai pas réussi à le retrouver
     
    makni apprécie ceci.
  • makni

    makni New Member

    Inscrit:
    Avr 19, 2023
    Messages:
    13
    J'aime reçus:
    0
    Salut ! merci pour votre retour message ! si vous avez un exemple svp envoyer sur :mahmoudmakni97@gmail.com
     
  • Partager cette page

    Chargement...