Pesquisar na Comunidade

A mostrar resultados para tags ''android''.

  • Pesquisa por Tags

    Introduza as tags separadas por vírgulas.
  • Pesquisar por Autor

Tipo de Conteúdo


Fórum

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
    • Apresentações
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • SharePoint
    • Apresentação de Software
  • Informática Extra-Programação
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Matemática
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Projectos
  • Revista PROGRAMAR
  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Wiki

Categorias

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros



Filtrar por número de...

155 resultados

  1. Estou com uma "dúvida existencial" que gostava de discutir e esclarecer quanto ao acesso a dispositivos Android. Vou explicar por analogia porque me parece mais fácil. Tendo um PC, posso meter uma pen USB com um Linux, arrancar o PC (estou a ignorar o facto de poder ser necessário ir à BIOS configurar a ordem de arranque) e aceder a todos os recursos do PC, em particular ao disco rígido que o mesmo tem. Transportando a ideia para Android, é possível fazer o mesmo? Meter um cartão micro SD, arrancar o dispositivo e e ganhar acesso (eventualmente root) ao dispositivo (inclusive ler mensagens, contactos, agenda, etc.)?
  2. Boas, Estava a tentar fazer um linearLayout por cima de outro, mas neste caso, no layout em que fica por cima, queria que pudesse redimensionar o height nesta vista. https://github.com/umano/AndroidSlidingUpPanel É do genero desta biblioteca, mas com a altura que o utilizador quiser. Estava a tentar encontrar uma biblioteca, mas não sei bem o nome que dar a isto. Cumps
  3. boas. eu to a tentar ligar a minha base de dados a minha aplicaçao: e uma coisa bem simples o que eu quero fazer, eu no meu layout, tenho 1 botao e uma edite box , eu quero que tudo o que eu escreva nessa edite box va para a base de dadados assim que carregar no botao, layout: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:inputType="textPersonName" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtName" android:text="Name" /> <Button android:text="Inserir" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnInserir" /> </LinearLayout> o codigo do botao que estou a fazer esta aqui: using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System.Net; namespace APP_Sport_Life_2 { [Activity(Label = "Teste", MainLauncher = false, Icon = "@drawable/Logo")] public class layout1 : Activity { string usr; public MySqlConnection protected override void OnCreate(Bundle bundle) { SetContentView(Resource.Layout.layout1); base.OnCreate(bundle); //fazer o programa saber onde estao os botoes e em que layouts var btnInserir = FindViewById<Button>(Resource.Id.btnInserir); //Faz o programa saber que cada botao recebe uma ordem quando e clicado btnInserir.Click += btnInserir_Click; } private void btnInserir_Click(object sender, EventArgs e) { } } } /*public class CreateContactEventArgs: EventArgs { public string Name { get; set; } public string Number { get; set;} public CreateContactEventArgs(string name, string number) { Name = name; Number = number; } } public class layout1 : DialogFragment { public event EventHandler<CreateContactEventArgs> OnCreateContact; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.layout1); // Set our view from the "main" layout resource var btnTeste = FindViewById<Button>(Resource.Id.btnTeste); btnTeste.Click += btnTeste_Click; } void btnTeste_Click(object sender, EventArgs e) { WebClient client = new WebClient(); Uri uri = new Uri("teste2.mdf"); if() } }*/ nao sei realmete como fazer entao se me podessem ajudar agradecia
  4. boas, entao eu gostaria de saber se alguem sabe um tutorial simples para ligar um aplicaçao do xamarin (android) a base de dados, a base de dados é suposto estar no computador. Por favor qualquer coisa ja me ajuda eu estou meio as segas.
  5. alguem me pode explicar de uma forma clara e simples o que sao estes erros? acontece que eu tenho estes erros mas ele/eles nao aparecem na minha lista de erros pq é que isto acontece e como posso descobrir onde estao este erros?
  6. Boas amigos, então eu nem sei bem explicar mas acontece que o seguinte: O meu projeto tem layouts, layouts normais, e a uma certa altura eu precisava de criar mais layouts e deu ate aqui tudo normal, bem acontece que quando vou para chamar o layout que acabo de criar a maquina diz me que ele nao existe, no entanto eu consigo ve-lo ali na pasata dos projetos, e consigo abrir e fazer tudo com ele o unico problema e que ele nao existe, alguem me consegue ajudar? sera que a um limite para a quantidade de layouts no xamarin?(apesar de isso nao fazer sentido ) esepro ajuda obrigado :/
  7. Boas. O título acho que diz tudo mas eu vou explicar melhor o que pretendo. Ando a tentar criar a minha própria versão de uma modded apk e para isso necessito de alterar o código presente em alguns ficheiros DLL que existem dentro de uma aplicação apk. O pessoal em Windows usa o dnSpy e ao abrirem/decompilarem um DLL desses podem ver código estilo c/c#/c++. Eu em Linux ainda não conseguir encontrar um programa que faça o mesmo que este dnSpy. Já tentei o dnSpyPython mas ainda não o consegui instalar devdo a vários erros do script de instalação e por isso continua a busca por uma alternativa.
  8. Boas pessoal eu gostava de liagar o meu programa a uma base de dados eu ainda nao tentei nada pq sempre que eu vou a procura de como se faz aparece uma maneira diferenete de ligar a base de dados e eu queria saber se sabem qual é a melhor maneira de fazer e se possivel se me podiam dar algum exemplo por onde eu me podesse seguir obrigado
  9. Boas eu to a criar uma aplicaçao e preciso de carregar num botao, quando carrego nesse botao quero poder ir a galeria do telemovel e escolher a foto e fazer com que ela aparece numa listView alguem consegue ajudar ando nisto a 1 semana ta ai o meu layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:minWidth="25px" android:minHeight="25px"> <Button android:text="fotografar" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button1" android:layout_marginTop="10dp" android:layout_marginBottom="5.0dp" /> <ImageView android:src="@android:drawable/ic_menu_gallery" android:layout_width="match_parent" android:layout_height="100.0dp" android:id="@+id/foto" android:layout_marginBottom="5.0dp" android:layout_marginTop="5.0dp" android:layout_marginRight="5.0dp" android:layout_marginLeft="5.0dp" /> <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="299.5dp" android:id="@+id/autoCompleteTextView1" android:layout_marginBottom="5.0dp" android:layout_marginTop="5.0dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" /> <Button android:text="Publicar" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnPublicar" android:layout_marginBottom="10.0dp" android:layout_marginTop="5.0dp" android:layout_marginRight="5.0dp" android:layout_marginLeft="5.0dp" /> </LinearLayout> aqui esta o c#: sei que a coisas que estao erradas mas nao sei resolver namespace APP_Sport_Life { [Activity(Label = "yourMotions", MainLauncher = false, Icon = "@drawable/Logo")] public class yourMOTIONS_publicar : Activity { private Image mListView; private BaseAdapter<Image> mAdapter; private List<Image> mContacts; private ImageView mSelectedPic; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.yourMotions_publicar); mListView = FindViewById<ImageView>(Resource.Id.foto); mContacts = new List<Image>(); Action<ImageView> action = PicSelected; mAdapter = new Foto(this, Resource.Layout.yourMotions_publicar, mContacts, action); mListView.Imagem = mAdapter; } private void PicSelected(ImageView selectedPic) { mSelectedPic = selectedPic; Intent intent = new Intent(); intent.SetType("image/"); intent.SetAction(Intent.ActionGetContent); this.StartActivityForResult(Intent.CreateChooser(intent, "Selecioa a foto"), 0); } protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if(resultCode == Result.Ok) { Stream stream = ContentResolver.OpenInputStream(data.Data); mSelectedPic.SetImageBitmap(BitmapFactory.DecodeStream(stream)); } } } }
  10. Boa noite, Estou com alguma dificuldade em conseguir fazer o pedido das permissões em runtime, sendo que apenas o dialog de aceitação de permissões de uma das duas permissoes necessárias é mostrado quando clico no button. /*Button PANIC Button @ Click this button to send a PANIC message to defined contact @ Inside the message go a PANIC message, name of person and GPS location */ Button button_panic = (Button) findViewById(R.id.button_panic); button_panic.setOnClickListener(new OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onClick(View v) { if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { requestLocationPermission(); requestSMSPermission(); String Message = "GRANTED"; Log.i("Location permission", Message); } else { sendMsg(); } } }); } @RequiresApi(api = Build.VERSION_CODES.M) private void getLocation() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. //requestLocationPermission(); return; } locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER); String longitudeString = String.valueOf(location.getLongitude()); String latitudeString = String.valueOf(location.getLatitude()); message = "PANIC - Preciso de Ajuda " + Nome + " " + Apelido + ". " + "Esta é a minha localização: Latitude: " + latitudeString + " Longitude: " + longitudeString; Log.e("Log Message", message); } @RequiresApi(api = Build.VERSION_CODES.M) private void sendMsg() { getLocation(); SmsManager smsManager = SmsManager.getDefault(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { requestSMSPermission(); } if (location != null) { smsManager.sendTextMessage(Telefone, null, message, null, null); Toast.makeText(MainActivity.this, "Sent to " + Telefone, Toast.LENGTH_SHORT).show(); } else { smsManager.sendTextMessage(Telefone, null, "test", null, null); Toast.makeText(MainActivity.this, "Please open your location service", Toast.LENGTH_SHORT).show(); } } @RequiresApi(api = Build.VERSION_CODES.M) private void requestSMSPermission() { requestPermissions(new String[]{Manifest.permission.SEND_SMS}, REQUEST_PERMISSION_SEND_SMS_CODE); } @RequiresApi(api = Build.VERSION_CODES.M) private void requestLocationPermission() { requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION_FINE_LOCATION_CODE); requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_PERMISSION_COARSE_LOCATION_CODE); } A questão das permissões ao executar o metodo onClickButton é apresentada de imediato o dialog para permitir a localização, mas apos permitir a app crasha e pelos logs reporta o seguinte erro referente à falta da permissão para SMS. No entanto se eu arrancar de novo a app, agora já com a permissão para a localização garantida, e executar de novo o metodo onClickButon é apresentada o dialog para a permissão do SMS. Além disso pelos log's eu consigo ver que a mensagem é gerada com sucesso, e pela impressão do Toast 'Sent to 93xxxxxxx' consigo perceber que foi executado o método mas na realidade a SMS nunca chega ao destino. Alguém me pode ajudar a ajeitar isto de forma a conseguir ter tudo funcional...
  11. Boa tarde, estou a tentar implementar um Search numa determinada listView, mas sem sucesso, será que me podem ajudar? O código que tenho até ao momento é o seguinte: Activity principal: public class CorposBombeirosActivity extends AppCompatActivity { ListView lv; DbHelper dbHelper; LVAdapter lvAdapter; ArrayList<CorpoBombeiros> listCorposBombeiros; //Variable Declaration private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // remove title getSupportActionBar().hide(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //Bloquear Orientação Ecrã a Portrait setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_corpos_bombeiros); //Publicity mAdView = (AdView) findViewById(R.id.adView); //mAdView.setAdSize(AdSize.BANNER); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); //Método que desencadeia os métodos de cópia da BD na classe DbHelper para a pasta databases no Android DbHelper myDbHelper = new DbHelper(this); try { myDbHelper.createDataBase(); } catch (IOException ioe) { throw new Error("Unable to create database"); } try { myDbHelper.openDataBase(); } catch (SQLException sqle) { throw sqle; } dbHelper = new DbHelper(this); lv = (ListView) findViewById(R.id.listView); listCorposBombeiros = new ArrayList<CorpoBombeiros>(); listCorposBombeiros.addAll(dbHelper.getListaCorposBombeiros()); lvAdapter = new LVAdapter(this, R.layout.corpo__bombeiros_item, listCorposBombeiros); lv.setAdapter(lvAdapter); //Open Detail Activity lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Intent intent = new Intent(CorposBombeirosActivity.this, CorposBombeirosDetailActivity.class); CorpoBombeiros p = (CorpoBombeiros) lvAdapter.getItem(arg2); intent.putExtra("CORPO_BOMBEIROS_ID", p.getID()); startActivity(intent); } }); } Classe LvAdapter: public class LVAdapter extends BaseAdapter{ Context context; int layout_id; private final List<CorpoBombeiros> items; //Constructor public LVAdapter(final Context context, final int layout_id, final List<CorpoBombeiros> items){ this.context = context; this.layout_id = layout_id; this.items = items; } //Count items public int getCount(){ return this.items.size(); } public Object getItem(int arg0){ return this.items.get(arg0); } public long getItemId(int arg0){ return 0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { final CorpoBombeiros row = this.items.get(arg0); View itemView = null; if (arg1 == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); itemView = inflater.inflate(layout_id, null); } else { itemView = arg1; } String cod_cb = Integer.toString(row.getCODIGO_CB()); TextView textViewCodigo_cb = (TextView)itemView.findViewById(R.id.textView_nome); textViewCodigo_cb.setText(cod_cb); TextView textViewCb = (TextView)itemView.findViewById(R.id.textView_cb); textViewCb.setText(row.getCB()); TextView textViewConcelho = (TextView)itemView.findViewById(R.id.textView_AOS); textViewConcelho.setText(row.getCONCELHO()); return itemView; } Alguém me pode ajudar e explicar como posso inserir aqui uma caixa de pesquisa do tipo search box que vá filtrando os items da listview a medida que vamos escrevendo algo na search box?
  12. Olá Estou a tentar implementar um autocomplete para uma pesquisa populada por uma base de dados Sqlite. Criei um metodo para devolver um ArrayList dos dados que quero usar no autocomplete que é o seguinte: //Get Concelhos to Search Autocomplete public ArrayList<String> getListConcelhos() { ArrayList<String> listaConcelhos = new ArrayList<>(); dbase = this.getReadableDatabase(); Cursor cursor = dbase.rawQuery("SELECT DISTINCT CONCELHO FROM " + TABLE_NAME, null); //cursor.moveToFirst(); while (cursor.moveToNext()) { String value = cursor.getString( cursor.getColumnIndex("CONCELHO")); listaConcelhos.add(value); } return listaConcelhos; } E então na activity chamar usando isto: dbHelper = new DbHelper(this); listaConcelhos = dbHelper.getListConcelhos(); String[] arrayConcelhos = listaConcelhos.toArray(new String[listaConcelhos.size()]); text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayConcelhos); text.setAdapter(adapter); text.setThreshold(1); No entanto isto não funciona, pois ao correr o autocomplete não retorna a dropdownlist com as opções... Usei um Log para verificar se o método estaria a retornar correctamente os dados e efectivamente o Log retorna a lista de concelhos. Log.e("LOG: ", listaConcelhos.toString()); No entanto se eu usar uma string estática, o AutoCompleteTextView é populado: String[] concelhos = {"Concelho 1", "Concelho2"}; text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,concelhos); text.setAdapter(adapter); text.setThreshold(1); Desta forma funciona correctamente. Alguém me pode ajudar a perceber o que estarei a fazer de mal?
  13. Olá boa tarde, Gostaria de saber como é que o sistema operativo Android elimina vírus informáticos nos telemóveis. Neste momento tenho a versão 5.1.1, mas será o antivírus do sistema suficiente para eliminar não só bots, mas também vírus como spywares e outros destinados a roubar dados pessoais? Que antivírus serão mais aconselhados para estes dispositivos móveis? Obrigada.
  14. Olá, estou escrevendo para contar e compartilhar com um projeto que eu só percebi, é chamado de pseudo-código, é uma aplicação Android, destinado a estudantes que frequentam os primeiros ciclos e fazer o curso de algoritmos e programação, eu ter tomado esse curso ea ele precisa fazer uma ferramenta para testar os nossos algoritmos, especialmente a partir do celular no momento em que é essencial para cada aluno, como nem todos andar com um laptop na mochila. I compartilhar o link do meu projeto: https : // play.google.com /store/apps/details?id=pe.diegoveloper.pseudocode Ele é baseado no pseudocódigo ferramenta para PC: PSeInt (estritamente) http : // pseint. sourceforge . net/ A aplicação suporta Inglês e Espanhol, se quisessem traduzi-lo para necessidade Português de sua ajuda, você acha? lembranças
  15. Bom dia, Eu estou a desenvolver um aplicação para android usando o software Android Studio. A minha aplicação contém dois Fragments: Home fragment e Genres fragment. No Genres fragment, tenho quatro ImageButton que quero que abram outros Fragments quando carregados. Para inicializar os botões, eu usei o método OnClickListener, mas surgiu uma dúvida. Eu tenho uma função com o operador switch, mas eu não sei o que pôr dentro do case de cada botão. O código é este: public class GenresFragment extends Fragment implements View.OnClickListener{ public GenresFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_genres, container, false); ImageButton rapBtn = (ImageButton)v.findViewById(R.id.RapButton); ImageButton popBtn = (ImageButton)v.findViewById(R.id.PopButton); ImageButton edmBtn = (ImageButton)v.findViewById(R.id.EDMButton); ImageButton rockBtn = (ImageButton)v.findViewById(R.id.RockButton); rapBtn.setOnClickListener(this); popBtn.setOnClickListener(this); edmBtn.setOnClickListener(this); rockBtn.setOnClickListener(this); return v; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.RapButton: break; case R.id.PopButton: break; case R.id.EDMButton: break; case R.id.RockButton: break; } } } Podem-me ajudar? Obrigado
  16. Boa tarde, Estou a tentar criar uma pequena app que envie uma mensagem com as coordenadas do dispositivo, no entanto não estou a conseguir implementar a obtenção das coordenadas e respectiva injecção na SMS. Consigo enviar uma SMS, mas agora como é que obtenho as coordenadas e as injecto na SMS? Aqui fica o código que tenho até agora: public class MainActivity extends AppCompatActivity { private static final int PERMISSION_REQUEST = 100; protected Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button_panic = (Button) findViewById(R.id.button_panic); button_panic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { //Runtime Permission Request if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { if (shouldShowRequestPermissionRationale(Manifest.permission.SEND_SMS)) { } else { requestPermissions(new String[]{Manifest.permission.SEND_SMS}, PERMISSION_REQUEST); } } else { sendSMS(); } } else { sendSMS(); } } else { showAlert(); } } }); } /*Send Message Method @ @Comment: Method to send a SMS using an intent */ private void sendSMS() { //SharedPreferences final SharedPreferences sharedpreferences; //Define SharedPreferences sharedpreferences = getSharedPreferences("PANIC_PREFERENCES", Context.MODE_PRIVATE); //Get SharedPreferences to Send PANIC SMS //Retrieve SharedPreferences // final String nome = sharedpreferences.getString("Key_nome", null); // final String apelido = sharedpreferences.getString("Key_apelido", null); // final String telefone = sharedpreferences.getString("Key_telefone", null); final String nome = "Nuno"; final String apelido = "Santos"; final String telefone = "123456789"; //Verify if sharedPreferences no Null - User Data Are Available if (nome != "" && apelido != "" && telefone != "") { String message = "PANIC - Preciso de Ajuda " + nome + " " + apelido; //+ " " + "Esta é a minha localização: Latitude: " + latitude_msg + " Longitude: " + longitude_msg; //Sens SMS SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(telefone, null, message, null, null); Toast.makeText(getApplicationContext(), "SMS Enviada.", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Dados do Utilizador Não Preenchidos!!", Toast.LENGTH_LONG).show(); } } /*Request Permission @ @Comment: Method to request permission to send SMS in Android versions over 23 - Marshmallow */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { sendSMS(); } else { } } /*GPS Location @ @Comment: Method to request permission to send SMS in Android versions over 23 - Marshmallow */ private void showAlert() { final AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("Ative a Sua Localização") .setMessage("A Sua Localização GPS está 'Off'.\nPor favor Ative a sua localização para " + "usar esta funcionalidade") .setPositiveButton("Location Settings", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface paramDialogInterface, int paramInt) { Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(myIntent); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface paramDialogInterface, int paramInt) { } }); dialog.show(); } } Alguém me pode ajudar a implementar a obtenção das coordenadas e a injecção na SMS? Terei de utilizar uma AsyncTask para obter as coordenadas e só depois dessa obtenção as injectar na SMS e enviar a respectiva? Agradecia a ajuda, pois tenho tentado sem sucesso até então. Cumps
  17. Boa noite. Tenho um trabalho de disciplina de testes de software. O meu grupo ficou encarregue de fazer uma apresentação da ferramenta de testes Robotium em Android Studio e uma demonstração. Segui alguns tutoriais no youtube (https://www.youtube.com/watch?v=mTF2k5NlFds), mas chego a uma parte e não consigo avançar mais. O objectivo deste teste é verificar se quando clicado o botão na "MainActivity" este apresenta a seguinte String. MainActivity package com.example.mirror.robotiumteste; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button btn_click; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Botão btn_click = (Button) findViewById(R.id.btn_test); //Visor de Texto (Text View) tv = (TextView) findViewById(R.id.main_tv); //Inserir texto na TextView depois de clicar no botão btn_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setText("Super!!!"); } }); } } Classe teste package com.example.mirror.robotiumteste; import android.test.ActivityInstrumentationTestCase2; import junit.framework.Assert; import android.test.suitebuilder.annotation.LargeTest; import android.widget.Button; import android.widget.TextView; import com.robotium.solo.Solo; /** * Created by mirror on 30/12/2016. */ public class exemploTeste extends ActivityInstrumentationTestCase2<MainActivity> { private Solo solo; public exemploTeste() { super(MainActivity.class); } @Override public void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); } @Override public void tearDown() throws Exception { solo.finishOpenedActivities(); super.tearDown(); } public void test_MainActivityChangeTextView_hi() throws Exception{ solo.unlockScreen(); Button btn_test = (Button) solo.getView(R.id.btn_test); solo.clickOnView(btn_test); solo.waitForText("hi", 1, 2000); TextView tv = (TextView) solo.getView(R.id.main_tv); String result = tv.getText().toString(); assertEquals(result, "All working"); } public void testEquals() throws Exception{ assertEquals(1, 1); } public void testBoolean() throws Exception{ assertTrue(true); } } O problema aparece no "ActivityInstrumentationTestCase2". Este aparece-me rasurado com uma mensagem que diz "android.test.ActivityInstrumentationTestCase2' is deprecated". Não sei como avançar. Se alguém conhecer esta ferramenta e poder me ajudar agradecia. Cumprimentos e obrigado
  18. Boas tardes pessoal, Fiz uma app em android com acesso a Webservice para gerir conteudos numa base de dados em mysql. Tenho tudo a rolar, num rasp. Quando ligo o apache em windows a app consegue resolver os nomes, no raspberry não, só em alternativa de alternar para o seu ip. Queria ver se alguma conseguiram contornar este obstaculo, digo, não quero fixar ips quero por dns. Obrigado
  19. Boas No caso de criar uma nova aplicação simples é necessário testar em vários 'devices' no Android SDK emulator ou existe algum modelo/device que consiga simular quase todos os telemóveis com o sistema android? Ps: Beginner Level
  20. Bom dia, Estou a ter alguns problemas em implementar uma pequena app para obter a meteorologia vinda das respostas do OpenWeatherMap, no entanto estou com problemas em implementar. Main Activity: public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String APP_ID = "api_id"; private static final int PERMISSION_ACCESS_COARSE_LOCATION = 1; private GoogleApiClient googleApiClient; private TextView textView; private TextView textView_humidity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.ACCESS_COARSE_LOCATION }, PERMISSION_ACCESS_COARSE_LOCATION); } googleApiClient = new GoogleApiClient.Builder(this, this, this).addApi(LocationServices.API).build(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case PERMISSION_ACCESS_COARSE_LOCATION: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // All good! } else { Toast.makeText(this, "Need your location!", Toast.LENGTH_SHORT).show(); } break; } } @Override protected void onStart() { super.onStart(); if (googleApiClient != null) { googleApiClient.connect(); } } @Override protected void onStop() { googleApiClient.disconnect(); super.onStop(); } @Override public void onConnected(Bundle bundle) { Log.i(MainActivity.class.getSimpleName(), "Connected to Google Play Services!"); if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient); double lat = lastLocation.getLatitude(); double lon = lastLocation.getLongitude(); String units = "metric"; String url = String.format("http://api.openweathermap.org/data/2.5/weather?lat=%f&lon=%f&units=%s&appid=%s", lat, lon, units, APP_ID); new GetWeatherTask(textView).execute(url); } } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.i(MainActivity.class.getSimpleName(), "Can't connect to Google Play Services!"); } private class GetWeatherTask extends AsyncTask<Meteo, Void, Meteo> { private TextView textView; private TextView textView_humidity; public GetWeatherTask(TextView textView) { this.textView = textView; } @Override protected Meteo doInBackground(Meteo... params) { Meteo meteo = new Meteo(); String weather = "UNDEFINED"; try { URL url = new URL(params[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream stream = new BufferedInputStream(urlConnection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); StringBuilder builder = new StringBuilder(); String inputString; while ((inputString = bufferedReader.readLine()) != null) { builder.append(inputString); } JSONObject topLevel = new JSONObject(builder.toString()); JSONObject main = topLevel.getJSONObject("main"); meteo.temperatura = String.valueOf(main.getDouble("temp")); meteo.humidade = String.valueOf(main.getDouble("humidity")); urlConnection.disconnect(); } catch (IOException | JSONException e) { e.printStackTrace(); } return meteo; } @Override protected void onPostExecute(Meteo meteo) { textView.setText("Current Weather: " + meteo.temperatura + " ºC"); textView.setText("Current Humidity: " + meteo.humidade + " ºC"); } } } Meteo Class: * Created by Nuno on 27/11/2016. */ public class Meteo { public String temperatura; public String humidade; public String vento; public Meteo() { temperatura = ""; humidade = ""; vento = ""; } public Meteo(String tEmperatura, String hUmidade, String vEnto) { temperatura = tEmperatura; humidade = hUmidade; vento = vEnto; } public String getTemperatura(){ return temperatura; } public String getHumidade (){ return humidade; } public String getVento() { return vento; } } Basicamente o meu problema está no URL. Ou seja, aqui: Eu ainda não estou muito familiarizado com estes elementos quer URL, quer asynctasks será que me poderiam ajudar a resolver este problema? Cumprimentos
  21. Boas noite, Estou a tentar fazer uma pequena app que consiste pesquisar numa base de dados SQLite. Para a pesquisa irei usar duas formas, ou seja através do Numero ONU e através do Nome. No entanto estou a deparar-me com um problema, a app estoura no caso de se tentar pesquisar sobre algum registo que não exista. Como poderei fazer para que seja despoletada uma mensagem de erro no caso da pesquisa não encontrar um resultado? DbHelper: //Metodo ONU Query public List<Elemento> getONU() { List<Elemento> listaElementos = new ArrayList<Elemento>(); //Seleccionar Query String selectQuery = "SELECT *FROM " + TABLE_NAME + " WHERE ONU = " + MainActivity.editText_ONU_search.getText(); dbase = this.getReadableDatabase(); Cursor cursor = dbase.rawQuery(selectQuery, null); //Loop por todas as linhas da BD e adiciona-las a lista if(cursor.moveToFirst()) { Elemento element = new Elemento(); element.setID(cursor.getInt(0)); element.setONU(cursor.getInt(1)); element.setNOME_SUB(cursor.getString(2)); listaElementos.add(element); } //Return listaElementos; return listaElementos; } //Metodo Nome Query public List<Elemento> getNomeSubstancia() { List<Elemento> listaElementos = new ArrayList<Elemento>(); //Seleccionar Query String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE NOME_SUB = '" + MainActivity.editText_NOME_search.getText() + "'"; dbase = this.getReadableDatabase(); Cursor cursor = dbase.rawQuery(selectQuery, null); //Loop por todas as linhas da BD e adiciona-las a lista if(cursor.moveToFirst()) { Elemento element = new Elemento(); element.setID(cursor.getInt(0)); element.setONU(cursor.getInt(1)); element.setNOME_SUB(cursor.getString(2)); listaElementos.add(element); } //Return listaElementos; return listaElementos; } OnuResultActivity: package com.example.nuno.materiasperigosasexample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.example.nuno.materiasperigosasexample.Database.DbHelper; import com.example.nuno.materiasperigosasexample.Database.Elemento; import java.util.List; public class OnuResultActivity extends AppCompatActivity { //Declaração de variaveis List<Elemento> listaElementos; int elemento_id = 0; Elemento currentElemento; TextView textView_onu, textView_nome_sub; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_onu_result); DbHelper db = new DbHelper(this); listaElementos = db.getONU(); currentElemento = listaElementos.get(elemento_id); textView_onu = (TextView)findViewById(R.id.textView_onu); textView_nome_sub = (TextView) findViewById(R.id.textView_nome_sub); //Apresentar Info setElementosView(); } private void setElementosView() { textView_onu.setText(Integer.toString(currentElemento.getONU())); textView_nome_sub.setText(String.valueOf(currentElemento.getNOME_SUB())); elemento_id++; } } NomeResultActivity: package com.example.nuno.materiasperigosasexample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import com.example.nuno.materiasperigosasexample.Database.DbHelper; import com.example.nuno.materiasperigosasexample.Database.Elemento; import java.util.List; public class NomeResultActivity extends AppCompatActivity { //Declaração de variaveis List<Elemento> listaElementos; int elemento_id = 0; Elemento currentElemento; TextView textView_onu, textView_nome_sub; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nome_result); DbHelper db = new DbHelper(this); listaElementos = db.getNomeSubstancia(); currentElemento = listaElementos.get(elemento_id); textView_onu = (TextView)findViewById(R.id.textView_onu); textView_nome_sub = (TextView) findViewById(R.id.textView_nome_sub); //Apresentar Info setElementosView(); } private void setElementosView() { textView_onu.setText(Integer.toString(currentElemento.getONU())); textView_nome_sub.setText(String.valueOf(currentElemento.getNOME_SUB())); elemento_id++; } } Alguma ideia de como poderei retornar uma mensagem de aviso quando a pesquisa não é encontrada de forma a cobrir a possibilidade de a pesquisa inserida pelo utilizador ser não corresponder ao que está na BD. Cumprimentos Psycop
  22. Pessoal estou fazendo um trabalho com o ionic + laravel para Android e estou tendo problemas com os componentes que tem na documentação do ionic como por exemplo o componente de select, ao colocar em um ion-list um ion-item com o conteúdo: <ion-item> <ion-label>Toppings</ion-label> <ion-select [(ngModel)]="toppings" multiple="true"> <ion-option>Bacon</ion-option> <ion-option>Black Olives</ion-option> <ion-option>Extra Cheese</ion-option> <ion-option>Mushrooms</ion-option> <ion-option>Pepperoni</ion-option> <ion-option>Sausage</ion-option> </ion-select> </ion-item> Ele não mostra o resultado como no simulador da documentação do ionic, parece que falta carregar algum css ou js, pois não carrega o select, se eu colocar o conteúdo assim: <label class = "item item-input item-select"> <div class = "input-label"> Select </div> <select> <option>Option 1</option> <option selected>Option 2</option> <option>Option 3</option> </select> </label> Mostra um resultado como uma view web e não é o que quero. Minha index.html está assim: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title></title> <link rel="manifest" href="manifest.json"> <!-- un-comment this code to enable service worker <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register('service-worker.js') .then(() => console.log('service worker installed')) .catch(err => console.log('Error', err)); } </script>--> <link href="lib/ionic/css/ionic.css" rel="stylesheet"> <link href="lib/ionic/css/ionic.min.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above <link href="css/ionic.app.css" rel="stylesheet"> --> <!-- ionic/angularjs js --> <script src="lib/ionic/js/ionic.bundle.js"></script> <!-- cordova script (this will be a 404 during development) --> <script src="cordova.js"></script> <!-- your app's js --> <script src="js/app.js"></script> <script src="js/controllers.js"></script> </head> <body ng-app="starter"> <ion-nav-view></ion-nav-view> </body> </html>
  23. Boa tarde, Estou a tentar colocar a funcionar um projecto open-source encontrado na internet mas estou com alguns problemas ao tentar implementar as permissões para o Location agora exigidas pelo compileSdkVersion 23 e buildToolsVersion "23.0.1" que quero utilizar. O código em que estou a usar pode ser encontrado aqui: https://github.com/vyshane/rex-weather /** * Implement an Rx-style location service by wrapping the Android LocationManager and providing * the location result as an Observable. */ public class LocationService { private final LocationManager mLocationManager; public LocationService(LocationManager locationManager) { mLocationManager = locationManager; } public Observable<Location> getLocation() { return Observable.create(new Observable.OnSubscribe<Location>() { @Override public void call(final Subscriber<? super Location> subscriber) { final LocationListener locationListener = new LocationListener() { public void onLocationChanged(final Location location) { subscriber.onNext(location); subscriber.onCompleted(); Looper.myLooper().quit(); } public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } }; final Criteria locationCriteria = new Criteria(); locationCriteria.setAccuracy(Criteria.ACCURACY_COARSE); locationCriteria.setPowerRequirement(Criteria.POWER_LOW); final String locationProvider = mLocationManager .getBestProvider(locationCriteria, true); Looper.prepare(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } mLocationManager.requestSingleUpdate(locationProvider, locationListener, Looper.myLooper()); Looper.loop(); } }); } } O meu problema está no 'this' da permissão, o qual tem como erro o seguinte: Eu não sei como colocar isto a funcionar, se alguém me puder dar uma ajuda agradecia. Cumps
  24. O DevFest Coimbra’16 é uma conferência tecnológica que se realiza no dia 3 de Dezembro, em Coimbra. Organizada pelo Google Developers Group (GDG) Coimbra, integra-se no ciclo de conferências GDG DevFest promovidas globalmente pela Google. Tem como objetivo, trazer o que melhor se faz de tecnologia ao centro de Portugal. Esta conferência é dedicada às áreas de mobile, web, design e segurança. Combina palestras, apresentadas por oradores de renome do sector tecnológico, com workshops tecnológicos, de forma a permitir o contacto direto dos participantes com a tecnologia mais recente e inovadora. O evento tem um custo associado de 5€, que revertem totalmente para a Liga Portuguesa Contra o Cancro e podem ser adquiridos: http://www2.last2ticket.com/pt/events/101/devfest-coimbra-2016. GDG Coimbra O GDG Coimbra é uma comunidade amadora de pessoas interessadas por tecnologia que se juntam para discutir ideias, desenvolver projetos, partilhar ideias (ou simplesmente beber uma cerveja, acompanhada por um nougat, o nosso “doce” atual de preferência). Entre os vários eventos organizados este ano pelo GDG Coimbra, constam: Study Jam (workshops), Developer Stories (palestras), I/O extended e Gather Hour. Redes Sociais #DevFestCbr #DevFest16 #GDGCoimbra Mais Info Site: http://devfest.gdgcoimbra.xyz Tickets: http://www2.last2ticket.com/pt/events/101/devfest-coimbra-2016 Facebook: fb.me/GDGCoimbra Google+: https://plus.google.com/+GDGCoimbra Twitter: @GDGCoimbra Email: gdgcoimbra@gmail.com
  25. Boas Estou a fazer uma série de pequenas libs para controlar alguns dispositivos Usb em Android. No entanto estou a ter alguns problemas com o comportamento dos dispositivos, com alguma instabilidade no mesmo. O mais provável é faltar-me controlar alguma coisa a nível do Usb. Alguém conhece bons tutoriais sobre como controlar dispositivos Usb, não obrigatoriamente, mas de preferência para Android?