Post recenti

Pagine: [1] 2 3 ... 10
1
Grazie.
Si, sapevo di questa cosa ma non era il problema.
Non so come mai ma c'era un problema del manifest e chissà perchè AS non me lo segnalava.

A parte questo, ti vorrei chiedere due cose:

1) secondo te l'approccio che sto seguendo, considerando che poi questa app verrà portata su smartwatch, è corretta? Si può fare di meglio?
2) al momento il mio codice fa si che più o meno ogni X secondi l'app gestisca l'allarme. Adesso dovrei fare in modo di leggere per (più o meno) Y secondi i dati di un sensore e pensavo di utilizzare la stessa tecnica, cioè di utilizzare un AlarmManager all'interno del metodo onRecive di AlarmReceived. Ma così facendo, una volta letti i dati come faccio a passarli all'activity per farglieli processare? Vorrei evitare di utilizzare sqlite perché alla fine non mi sembra il caso per un paio di valori per ogni misurazione del sensore. Inoltre, come so con certezza che se l'activity processa i dati, allora la lettura dal sensore è terminata?

Grazie
2
Il codice è corretto, ma probabilmente lo stai testando su un dispositivo con un API level >= 19, dove la tempistica degli allarmi impostati con setRepeating non è più esatta. L'allarme funziona, ma non ogni due secondi: magari parte ogni minuto o ogni 2 minuti.
Per ottenere un effetto il più possibile simile a quello che vuoi tu con un AlarmManager devi usare:
- API fino a 18: il tuo codice va bene
- API 19-22: setExact con rischedulizzazione dell'allarme manuale (in pratica non appena ricevi il primo broadcast nel BroadcastReceiver, imposti un nuovo allarme fra 2 secondi)
- API >= 23: setExactAndAllowWhileIdle  con rischedulizzazione dell'allarme manuale.

In pratica con dispositivi recenti non otterrai mai una temporizzazione degli allarmi perfetta al secondo: ci saranno sempre delle piccole differenze.

Questo è un piccolo tutorial dove ho cercato di riassumere la situazione allo stato attuale: credo sia ancora aggiornato:
Android - The Technical Blog: Scheduling repeated tasks offline at (almost) exact times
3
Ciao,
devo scrivere una piccola app che ogni X minuti attivi un sensore e legga i dati forniti per un certo numero Y di secondi.
Terminata la lettura dei dati, questi devono essere passati ad un oggetto specifico che li dovrà elaborare.

Ho la necessità di far si che queste letture vengano eseguite indipendentemente se l'app è in foreground, background o se il dispositivo è in standby.

Dal momento che non sono affatto esperto di Android (ho iniziato a studiarlo da poco), avrei bisogno di qualche suggerimento.

Per quanto riguarda l'attivazione del sensore ogni X minuti, pensavo di utilizzare un AlarmManager, visto che a quanto pare fa il suo lavoro in qualsiasi condizione.
Mi chiedevo però cosa fosse conveniente fare per far si che la lettura dei dati dal sensori duri un certo tempo prestabilito (Y secondi).
Inoltre, una volta terminare le misurazioni, immagino che l'allarme venga bloccato fino a che non passa il periodo impostato, quindi come mi conviene passare i dati ottenuti per farli elaborare?

Grazie

Post unito: [time]27 Luglio 2017, 15:49:04 CEST[/time]
Per adesso il codice che ho prodotto (e che purtroppo non funziona) è questo:

Codice: [Seleziona]
package com.readingsensor;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatButton;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.readingsensor.AlarmReceived;

public class MainActivity extends AppCompatActivity
{
    private AppCompatButton bottoneStartStop;
    private PendingIntent pendingIntent;
    private AlarmManager alarmManager;

    public static final int INTERVALLO_LETTURA_SENSORE = 1000 * 2;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Intent alarmIntent = new Intent(getApplicationContext(), AlarmReceived.class);
        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        bottoneStartStop = (AppCompatButton) findViewById(R.id.idBottoneStartStop);

        bottoneStartStop.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                // Code here executes on main thread after user presses button
                if (bottoneStartStop.getText().equals("Start"))
                {
                    // ogni 5 secondi viene lanciato l'allarme
                    Log.i("MainActivity", "Ho premuto start");
                    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), INTERVALLO_LETTURA_SENSORE, pendingIntent);
                    Toast.makeText(getApplicationContext(), "Allarme lanciato tra 2 secondi", Toast.LENGTH_SHORT).show();
                    bottoneStartStop.setText(R.string.bottoneStop);
            }
                else
                {
                    Log.i("MainActivity", "Ho premuto stop");
                    alarmManager.cancel(pendingIntent);
                    Toast.makeText(getApplicationContext(), "Allarme terminato", Toast.LENGTH_SHORT).show();
                    bottoneStartStop.setText(R.string.bottoneStart);
                }
            }
        });
    }
}
Codice: [Seleziona]
package com.readingsensor;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class AlarmReceived extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.i("AlarmtReceived", "E' stato ricevuto l'allarme del timer. Leggo il sensore");
        Toast.makeText(context, "ALLARME RICEVUTO", Toast.LENGTH_SHORT).show();

    }
}



Praticamente alla pressione del tasto start, l'applicazione dovrebbe ogni 2 secondi mostrare un toast e scrivere un messaggio di log, ma non lo fa.
Dove sto sbagliando?
Grazie
4
Altri problemi / Installazione Google Play Service
« Ultimo post da traficante.donato il 26 Luglio 2017, 12:52:21 CEST »
Salve a tutti,

vorrei integrare nella mia applicazione il Calendario di Google.
Ho scaricato dal SdkManager i pacchetti necessari dalla sezione SdkTools :
- Google Play services versione 42
- Google Repository versione 56

seguendo la guida ufficiale per l'installazione dovrei inserire nel file build.gragle (Module:app) il seguente codice :

Codice: [Seleziona]
dependencies { 
   
    compile 'com.google.android.gms:play-services:?????' 
}

Prima domanda (banale) dove trovo il numero della versione ?

Poi dovrei inserire nel file AndroidManifest.xml nel nodo <application>, la seguente annotazione:
Codice: [Seleziona]
<meta-data android:name="com.google.android.gms.version" 
        android:value="@integer/google_play_services_version" /> 

Seconda domana : il valore @integer/google_play_services_version  mi da errore.

Ultima domanda quando cerco di recuperare da terminale il valore SHA1 con il seguente comando:
Codice: [Seleziona]
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
mi da il seguente errore :
Codice: [Seleziona]
Errore keytool: java.lang.Exception: Il file keystore non esiste: path-to-debug-or-production-keystore
java.lang.Exception: Il file keystore non esiste: path-to-debug-or-production-keystore
        at sun.security.tools.keytool.Main.doCommands(Main.java:745)
        at sun.security.tools.keytool.Main.run(Main.java:343)
        at sun.security.tools.keytool.Main.main(Main.java:336)

Grazie in anticipo a tutti.
5
View e Layout / Scroll orizontale e verticale
« Ultimo post da capitancooker il 26 Luglio 2017, 12:01:26 CEST »
Non riesco a capire come realizzare un layout sullo stile RaiPlay (vedi allegato) in cui la colonna a sinistra e le intestazioni con l'ora in alto si muovono in sincrono con la parte centrale.
Forse esiste una lib già pronta oppure è possibile realizzarlo con i widget standard ma non ci arrivo da solo.
Mi date una bussola da seguire?
Grazie mille,
Marco


Post unito: [time]26 Luglio 2017, 12:16:29 CEST[/time]
Ecco, una cosa così:
https://github.com/evrencoskun/TableViewSample
Magari ne conoscete di migliori e soprattutto senza dover inserire il contenuto nelle celle fisse.
6
Multithreading e servizi / Testare Service
« Ultimo post da iClaude il 26 Luglio 2017, 09:55:35 CEST »
Qualcuno ha idea di come testare uno (started) Service che esegue delle operazioni in background tramite Handler?
7
Gestione dei dati / Re:File su micro sd marshmallow
« Ultimo post da Ohmnibus il 25 Luglio 2017, 22:41:11 CEST »
Da quel che ho capito fino ad Android 7.0 sulle schede SD non è possibile uscire dalla cartella dell'app in scrittura.

Qui c'è una disanima sull'argomento: https://stackoverflow.com/a/40201333/466938

Non so aiutarti meglio di così.
8
Buongiorno a tutti,
probabilmente il titolo è un pò confuso, ma racchiudere in poche parole il mio problema non è semplice.


Il problema è il seguente:
Ho un web service scritto in .NET in cui all'interno ho creato alcune Structure.
Nella mia app, che sto scrivendo in JAVA, avrei bisogno di dichiarare una variabile sfruttando la Structure del mio WS. E' possibile farlo? Se sì, come?


Qua sotto vi allego un esempio di Structure del mio WS e la dichiarazione di ciò che mi serve in .NET.


Codice: [Seleziona]
Structure MAGAZZINO_Tipo_Attributi
        Dim IDTipologia As Long
        Dim IDAttributo As Long
        Dim Descrizione As String
        Dim Tipo As String
        Dim FlgObbligatorio As Boolean
        Dim Valore As String
        Dim ID_Obj As Long
    End Structure

Codice: [Seleziona]
Dim R As Ws.MAGAZZINO_Tipo_Attributi
In più il metodo del WS che dovrà essere chiamato ha la variabile in ingresso con "ByRef". Come funziona in Java il "ByRef"?
Ecco la dichiarazione del metodo del WS:

Codice: [Seleziona]
Public Function MAGAZZINO_GetAttributi(ByVal StrUser As String, ByVal StrToken As String, ByRef IDUtente As Long, ByRef DatiMag As MAGAZZINO_Tipo_Attributi) As Boolean

Spero di essere stato chiaro.


Grazie in anticipo a chi sarà così gentile da rispondere
9
Applicazioni / [APP] Glossario Finanziario
« Ultimo post da Damiani Programmer il 25 Luglio 2017, 08:54:24 CEST »
Glossario Finanziario
https://play.google.com/store/apps/details?id=com.damianiprogrammer.Glossario_Finanzario



Glossario Finanziario sempre in aggiornamento e funzionante offline perché non ha bisogno di una connessione internet.
Nessuna pubblicità, perfetta app per Scuola ed Università.
Non riesci a ricordarti dei termini ed hai un'esame o un compito in classe a breve? Vuoi fare una ripetizione veloce dei concetti che ti serviranno? Questa è l'applicazione giusta per te!
Continuamente in aggiornamento per aggiungere nuovi argomenti e richieste inviate per email.
10
View e Layout / multi-risoluzione
« Ultimo post da EM95 il 24 Luglio 2017, 18:13:48 CEST »
Ciao a tutti,
avrei bisogno di qualche consiglio per risolvere un problema di multi-risoluzione.

Sto lavorando ad un gioco 3D in android studio ed è necessario che questo si adatti perfettamente a tutti i dispositivi android.
Ho iniziato creando le varie cartelle layout ma, poiché la schermata di gioco presenta circa una ventina di immagini, mi risulta difficile e dispendioso in termini di tempo modificare le dimensioni e soprattutto la posizione di ogni singola immagine. Inoltre, così facendo, gli elementi non sono mai posizionati perfettamente se la risoluzione cambia (anche di poco).
L'ipotesi migliore sarebbe poter inserire delle dimensioni dinamiche cioè rilevare nell' activity le dimensioni dello schermo su cui viene avviata l' applicazione e successivamente trasferire l'informazione ad un unico layout che, invece di avere valori fissi, avrà una sorta di formula che calcola quindi al momento la dimensione/posizione del relativo elemento.

Purtroppo non ho trovato modo di realizzare questo, per questo chiedo se qualcuno sa dirmi come risolvere il problema o se ci sono delle vie alternative.

Graziee :-)
Pagine: [1] 2 3 ... 10