Iniciado por
pakoito
En Android Studio puedes publicar a github en un par de clicks.
Tendré que echarle un ojo cuando tenga algo más de tiempo. Entre tanto, aquí os dejo el código:
MainActivity
Código:
package com.balder1984.myapp;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.speech.RecognizerIntent;
import com.balder1984.myapp.tasks.RaeParserTask;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MainActivity extends Activity {
private static final Logger LOGGER = Logger.getLogger(MainActivity.class.getCanonicalName() + " Logger");
private static final int SPEECH_REQUEST_CODE = 0;
private static final String CADENA_VACIA = "";
private TextView textoVersion;
private ImageButton botonBuscar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WatchViewStub stub = (WatchViewStub) this.findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
MainActivity.this.textoVersion = (TextView) stub.findViewById(R.id.textoVersion);
MainActivity.this.botonBuscar = (ImageButton) stub.findViewById(R.id.botonBuscar);
MainActivity.this.botonBuscar.setOnClickListener(onClickListenerBotonBuscar());
MainActivity.this.textoVersion.setText(R.string.texto_version);
}
});
}
private View.OnClickListener onClickListenerBotonBuscar() {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.reconocerVoz();
}
};
}
private void reconocerVoz() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, SPEECH_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) {
List<String> results = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
String busqueda = results.get(0);
if(CADENA_VACIA.equals(busqueda)) {
return;
}
String urlDrae = "http://lema.rae.es/drae/?val=" + busqueda.trim().toLowerCase();
System.err.println(urlDrae);
RaeParserTask parserTask = new RaeParserTask(this, urlDrae, busqueda);
parserTask.execute();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
RaeParserTask
Código:
package com.balder1984.myapp.tasks;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import com.balder1984.myapp.R;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class RaeParserTask extends AsyncTask<Void, Void, Void> {
private static Logger LOGGER = Logger.getLogger(RaeParserTask.class.getCanonicalName() + " Logger");
private Activity parent;
private ProgressDialog progressDialog;
private String url;
private String busqueda;
public RaeParserTask(Activity parent, String url, String busqueda) {
this.parent = parent;
this.url = url;
this.busqueda = busqueda;
}
private String getString(int resId) {
return this.parent.getString(resId);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
this.progressDialog = new ProgressDialog(parent);
this.progressDialog.setTitle(getString(R.string.titulo_dialogo_espera));
this.progressDialog.setMessage(getString(R.string.mensaje_dialogo_espera));
this.progressDialog.setIndeterminate(false);
this.progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
Document pagina = Jsoup.connect(this.url).get();
Elements descripcion = pagina.select("meta[name=content]");
LOGGER.log(Level.INFO, descripcion.attr("content") + " " + this.busqueda);
} catch (IOException e) {
LOGGER.log(Level.SEVERE, "No se ha podido conectar con el origen de datos:", e);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
this.progressDialog.dismiss();
}
}
-----Actualizado-----
Y aquí lo que tengo en el AndroidManifest.
Código:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.balder1984.myapp" >
<uses-feature android:name="android.hardware.type.watch" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/myapp_ico"
android:label="@string/app_name"
android:theme="@android:style/Theme.DeviceDefault" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Marcadores