Come creare un videogioco? Quali tool e linguaggi utilizzare? Come impostare un nuovo progetto?
Ecco una panoramica e utilizzo dei motori più conosciuti per la creazione di videogiochi

Post in evidenza

Vendere il tuo videogioco, quali piattaforme usare?

Supponiamo abbiate sviluppato di giorno (ma soprattutto di notte) negli ultimi 12 mesi un gioco che vi sta particolarmente a cuore (vuoi per...

Visualizzazioni totali

Android, creare una EULA da accettare



In generale una EULA (o End-User License Agreement) è un accordo di licenza tra il fornitore di un programma software e l'utente finale. In senso lato può rappresentare una sorta di elenco di avvertenze o accettazioni che l'utente finale decide di validare prima di installare un software.

Anche in campo videoludico è possibile elencare delle avvertenze in modo che l'utente finale (in questo caso il giocatore che ha scaricato un'app) ne sia a conoscenza.

End User License Agreement


In questo post vedremo come integrare facilmente un documento di EULA in modo tale che l'utente finale se non accetta i termini elencati, non possa lanciare la nostra app.
Il nostro esempio si applica facilmente anche ad app o giochi già completati, non è necessario applicarlo ad un programma ancora da sviluppare.

Seguire i seguenti passi:

  1. Aprite il vostro progetto con Android Studio (oppure create un nuovo progetto)
  2. Create una nuova classe Eula.java all'interno del vostro package e incollate il sorgente che viene riportato in questo post
  3. All'interno del metodo onCreate() della Main Activity del progetto, aggiungere la chiamata al metodo Eula.show(this);

Sorgente


/*
 * Eula.java
 * Sviluppare Videogiochi
 * https://svilupparevideogiochi.blogspot.it
 *
 * Modalità:
 * Visualizza una EULA "End User License Agreement" che l'utente deve accettare prima di eseguire
 * per la prima volta l'applicazione associata.
 * Se l'utente accetta i termini, la eula non viene piu visualizzata nelle successive esecuzioni
 * Se l'utente non accetta i termini, l'app viene chiusa
 *
 * Utilizzo:
 * 1) creare una classe Eula.java con questo contenuto, mettendo a posto il package corretto
 * 2) all'interno del metodo "onCreate" dell'app principale, richiamare il metodo Eula.show(this);
 */

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

class Eula {

    private static final String EULA_APP_VERSION = "app.version";
    private static final String EULA_PREFERENCE_NAME = "eula";
    private static final String EULA_PREFERENCE_ACCEPTED = "eula.accepted";
    protected static PackageInfo packageinfo = null;

    private static String testo = "End-User License Agreement for this game for Android\n"
            + "\nThis End-User License Agreement (EULA) is a legal agreement between you (either an "
            + " individual or a single entity) and the author of this Software for the software product "
            + " identified above, which includes computer software and may include associated media, "
            + "printed materials, and 'online' or electronic documentation (“SOFTWARE PRODUCT”)."
            + "\nBy installing, copying, or otherwise using the SOFTWARE PRODUCT, you agree to be "
            + "bounded by the terms of this EULA."
            + "\n\nIf you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT."
            + "\n\nLIMITED WARRANTY\n"
            + "\nNO WARRANTIES.\n"
            + "\nThe Author of this Software expressly disclaims any warranty for the SOFTWARE "
            + "PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided 'as is' "
            + "without warranty of any kind, either express or implied, including, without limitation, "
            + "the implied warranties or merchantability, fitness for a particular purpose, or "
            + "noninfringement. The entire risk arising out of use or performance of the SOFTWARE "
            + "PRODUCT remains with you."
            + "\n\nNO LIABILITY FOR DAMAGES.\n"
            + "\nIn no event shall the author of this Software be liable for any special, "
            + "consequential, incidental or indirect damages whatsoever (including, without "
            + "limitation, damages for loss of business profits, business interruption, loss of "
            + "business information, or any other pecuniary loss) arising out of the use of or "
            + "inability to use this product, even if the Author of this Software is aware of the "
            + "possibility of such damages and known defects.";

    public Eula() {
    }

    static private void getPackageInfo(final Activity activity) {
        try {
            packageinfo = activity.getPackageManager().getPackageInfo(activity.getPackageName(), PackageManager.GET_ACTIVITIES);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }

    static interface OnEulaAgreedTo {
        void onEulaAgreedTo();
    }

    static boolean show(final Activity activity) {
        getPackageInfo(activity);
        final SharedPreferences preferences = activity.getSharedPreferences(EULA_PREFERENCE_NAME, Activity.MODE_PRIVATE);

        // Scommentare le seguente riga per mostrare la EULA ad ogni esecuzione dell'app
        // serve per testare il funzionamento
        // preferences.edit().putBoolean(EULA_PREFERENCE_ACCEPTED, false).commit();

        if (!preferences.getBoolean(EULA_PREFERENCE_ACCEPTED, false) || (!packageinfo.versionName.equalsIgnoreCase(preferences.getString(EULA_APP_VERSION, "")))) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle("Licenza");
            builder.setCancelable(true);
            builder.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    accept(preferences);
                    if (activity instanceof OnEulaAgreedTo) {
                        ((OnEulaAgreedTo) activity).onEulaAgreedTo();
                    }
                }
            });

            builder.setNegativeButton("Refuse", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    refuse(preferences, activity);
                }
            });

            builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
                public void onCancel(DialogInterface dialog) {
                    refuse(preferences, activity);
                }
            });

            builder.setMessage(testo);
            builder.create().show();
            return false;
        }
        return true;
    }

    private static void accept(SharedPreferences preferences) {
        preferences.edit().putBoolean(EULA_PREFERENCE_ACCEPTED, true).commit();
        preferences.edit().putString(EULA_APP_VERSION, packageinfo.versionName).commit();
    }

    private static void refuse(SharedPreferences preferences, Activity activity) {
        preferences.edit().putBoolean(EULA_PREFERENCE_ACCEPTED, false).commit();
        activity.finish();
    }
}

Screenshot risultante

EULA in azione su Android

Ovviamente siete liberi di utilizzare questo sorgente in qualsiasi progetto, potete modificarlo (o modificare il testo) a vostro piacimento senza restrizioni.

Se vi è stato utile, potete condividere il blog sul vostro social preferito. Grazie!

0 commenti:

Posta un commento