Autore Topic: Spiegazione dell'uso di una activity  (Letto 349 volte)

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Spiegazione dell'uso di una activity
« il: 03 Luglio 2014, 19:21:31 CEST »
0
Ciao a tutti ragazzi  :-) finamente torno a scrivere su questo forum dopo un periodo di assenza dovuto ad esami universitari... vi espongo subito il problema. Io dovrei realizzare una comunicazione seriale con un dispositivo "home made" fatto da un mio amico elettronico. Ho scaricato tramite un client svn questo progetto che penso tutti conosciate se avete avuto esperienze di comunicazione seriale https://code.google.com/p/android-serialport-api/source/checkout[/url].
Il mio problema sta nel fatto che non capisco come mai ci sia una Activity chiamata SerialPortActivity che però non è inserita nel manifest dell'applicazione (vedi foto allegata) e ha il seguente codice....
Codice (Java): [Seleziona]
/*
 * Copyright 2009 Cedric Priscal
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * [url]http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


package android_serialport_api.sample;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.InvalidParameterException;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android_serialport_api.SerialPort;

public abstract class SerialPortActivity extends Activity {

        protected Application mApplication;
        protected SerialPort mSerialPort;
        protected OutputStream mOutputStream;
        private InputStream mInputStream;
        private ReadThread mReadThread;

        private class ReadThread extends Thread {

                @Override
                public void run() {
                        super.run();
                        while(!isInterrupted()) {
                                int size;
                                try {
                                        byte[] buffer = new byte[64];
                                        if (mInputStream == null) return;
                                        size = mInputStream.read(buffer);
                                        if (size > 0) {
                                                onDataReceived(buffer, size);
                                        }
                                } catch (IOException e) {
                                        e.printStackTrace();
                                        return;
                                }
                        }
                }
        }

        private void DisplayError(int resourceId) {
                AlertDialog.Builder b = new AlertDialog.Builder(this);
                b.setTitle("Error");
                b.setMessage(resourceId);
                b.setPositiveButton("OK", new OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                                SerialPortActivity.this.finish();
                        }
                });
                b.show();
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                mApplication = (Application) getApplication();
                try {
                        mSerialPort = mApplication.getSerialPort();
                        mOutputStream = mSerialPort.getOutputStream();
                        mInputStream = mSerialPort.getInputStream();

                        /* Create a receiving thread */
                        mReadThread = new ReadThread();
                        mReadThread.start();
                } catch (SecurityException e) {
                        DisplayError(R.string.error_security);
                } catch (IOException e) {
                        DisplayError(R.string.error_unknown);
                } catch (InvalidParameterException e) {
                        DisplayError(R.string.error_configuration);
                }
        }

        protected abstract void onDataReceived(final byte[] buffer, final int size);

        @Override
        protected void onDestroy() {
                if (mReadThread != null)
                        mReadThread.interrupt();
                mApplication.closeSerialPort();
                mSerialPort = null;
                super.onDestroy();
        }
}
... e questa venga normalmente utlizzata nel progetto e all'avvio il programma compila senza errori.
La mia domanda è questa... Come fa l'app ad istanziare le variabili al suo interno se durante l'esecuzione dell'app "non ci entro mai" (nell'intero progetto non ci sono chiamate a questa activity con gli Intent) e oltretutto estende la classe activity ma non è presente nel manifest?

Spero di essere stato chiaro e grazie in anticipo per le risposte  :-)


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Spiegazione dell'uso di una activity
« Risposta #1 il: 03 Luglio 2014, 19:25:40 CEST »
0
Se non è nel manifest, vuol dire che l'app ne usa un'altra, probabilmente molto simile a quella che hai citato.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Re:Spiegazione dell\'uso di una activity
« Risposta #2 il: 03 Luglio 2014, 19:45:19 CEST »
0
Ma se apro gli utilizzi delle variabili
Codice (Java): [Seleziona]
protected Application mApplication;
        protected SerialPort mSerialPort;
        protected OutputStream mOutputStream;
        private InputStream mInputStream;
        private ReadThread mReadThread;

in giro per il progetto ricado sempre dentro l'activity del mio post precedente... mi pare strana sta cosa  o_O

Post unito: 03 Luglio 2014, 19:56:15 CEST
Bradipao se vuoi darci un occhiata ti ho allegato il progetto in eclipse... se hai un attimo di tempo e soprattutto voglia di darci un occhiata mi faresti un grande favore... almeno cosi capisco pure io quello che sto leggendo  :-)

spero di non chiedere troppo  :-)
« Ultima modifica: 03 Luglio 2014, 19:56:15 CEST da Nic, Reason: Merged DoublePost »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Spiegazione dell'uso di una activity
« Risposta #3 il: 15 Luglio 2014, 21:40:06 CEST »
0
Prova a mettere dei Log nell'activity per vedere se viene eseguita