CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

[Tutorial] Condividere scores online

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    43

    Ringraziamenti
    0
    Ringraziato 8 volte in 8 Posts
    Predefinito

    [Tutorial] Condividere scores online

    Per uppare scores online e fare una classica, ci serve un programma che farà da client, java su android, e una parte lato server in PHP, l'app invierà gli scores, e lato server, lo script in PHP scriverà gli scores nel file che chiameremo Records.txt. In questo file, ci saranno tutti gli scores, e poi verrano ordinati dal più grande al più piccolo.

    Nella main activity inseriamo due EditText, uno per il name, uno per lo score, e il metodo PostDataOnPHP:

    codice:
    eText = (EditText)findViewById(R.id.editText);
    eRecord = (EditText)findViewById(R.id.editText1);	
    
    private void PostDataOnPHP(String url, String code, String data) {
    	    // Create a new HttpClient and Post Header
    	    HttpClient httpclient = new DefaultHttpClient();
    	    HttpPost httppost = new HttpPost(url);
    
    	    try {
    	        // Add your data
    	        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    	        nameValuePairs.add(new BasicNameValuePair(code, data));
    	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
    	        // Execute HTTP Post Request
    	        HttpResponse response = httpclient.execute(httppost);	       	        
    
    	    } catch (ClientProtocolException e) {
    	        // TODO Auto-generated catch block
    	    } catch (IOException e) {
    	        // TODO Auto-generated catch block
    	    }
    	}
    Il metodo PostDataOnPHP(), prende tre argomenti, url, code, e data, url è ovviamente dove sta il nostro file.php sul server, per esempio "www.ilmiosito.it/file.php", code è la stringa che passeremo allo script php per fargli capire che è l'app giusta, e non un programma qualunque a mandargli dati. In fine, data, anche questa una stringa, che ovviamente conterrà lo score da uppare.

    Inseriamo quindi un bottone nella nostra main activiy:

    codice:
    Button buttonSend = (Button)findViewById(R.id.send);
    		buttonSend.setOnClickListener(new View.OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				PostDataOnPHP("http://www.ilmiosito.it/file.php", "code001", eRecord.getText()+": "+eText.getText());
    			}
    
    		});
    qui semplicemente, quando premiamo il bottone invierà il nostro score.

    “code001” vedremo la sua utilità nel file.php fra poco, eRecord.getText(), è la variabile che conterrà il nostro score che abbiamo scritto nel campo eRecord, e name è la stringa con il nostro nome che abbiamo scritto nel campo eText.

    Adesso parliamo del lato server:

    codice:
    <?php
    
    if (isset($_POST['code001']) && $_POST['code001'] != '') 
    	{
            $your_string = $_POST['code001'];
    
    		$file = 'Records.html';
    		$current = file_get_contents($file);
    		$current .= $your_string . ';*~';
    		file_put_contents($file, $current);
    
    		$array = explode("*~", $current);
    		sort($array, SORT_NUMERIC);
    		$arrayReversed = array_reverse($array);
    
    		$file2 = 'Records.txt';
    		file_put_contents($file2, $arrayReversed);
        } 
    	else 
    	{
            echo "post code sbagliato";
        }
    ?>
    Qui lo script in php, quando arrivano i dati, controlla che il codice sia “code001”, quello che abbiamo visto in precedenza, e quindi dopo esegue i calcoli, altrimenti, restituisce un echo "post code sbagliato".

    Guardiamo che calcoli fa lo script, in caso la stringa passata sia code001:

    La prima riga, prende la stringa che abbiamo inviato da android, $_POST[’code001’], e la assegna a $your_string, apre il file Records.html, inserisce tutti i dati dentro la variabile $current, aggiunge poi a current la nostra stringa $your_string, e poi aggiunge dei valori di chiusura riga, “;*~”, e infine, scrive current dentro il file Records.html, aggiornandolo.

    A questo punto lo script, non fa altro che creare un nuovo array, suddivide $current ai caratteri “*~”, poi ordina tutti i numeri in sort_numeric, alla riga “sort($array, SORT_NUMERIC);”, e subito dopo ribalta l’array, ( $arrayReversed = array_reverse($array); )questo perchè abbiamo bisogno che i numeri più grandi siano in cima all’array, e non in fondo, gli score più alti vanno prima in classifica ovviamente.

    Una volta fatto il tutto, scrive $arrayReversed nel file Records.txt, che adesso andremo a leggere e parserizzare su android.

    Creeremo una nuova ListActivity, leggeremo il file Records.txt, e inseriremo i dati dentro una lista:

    codice:
    public class A_Scores extends ListActivity
    {
    	private String myURL = "http://www.ilmiosito.it/Records.txt";
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    try {
    			// Create a URL for the desired page
    			URL url = new URL(myURL);
    
    			// Read all the text returned by the server
    			BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
    			String str = br.readLine();
    			br.close();
    
    			if(str != "")
    			{
    				String[] array = str.split(";");
    
    				for(int n = 0; n < array.length; n++)
    				{
    					String temp = array[n];
    					array[n] = (n+1)+") "+temp;
    				}								
    
    				setListAdapter(new ArrayAdapter<String>(this, R.layout.listff, array));
    			}
    		} 
    		catch (MalformedURLException e) 
    		{
    		} 
    		catch (IOException e) 
    		{
    		}
    	}
    }
    Fonte: http://www.startingpixel.com

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy