I am trying to use Asynctask
to streamline the plotting of several graphs on Android
.
In the doInBackground()
, I calculate 3 different arrays (n, l and g2) that will be the values to be plotted in onPostExecute()
.
The problem is that, once I have obtained the values in doInBackGround()
, I don´t really know how to use them as entries in onPostExecute()
, can anybody give me a hand?
private class Operaciones2 extends AsyncTask<Void, Integer, Void> {
int progress;
double [] st =new double [arr.length];
int j=0;
protected void onPostExecute(Void unused ){
series1 = new SimpleXYSeries(
Arrays.asList(n), // SimpleXYSeries takes a List so turn our array into a List
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, // Y_VALS_ONLY means use the element index as the x value
"Series1");
series2 = new SimpleXYSeries(
Arrays.asList(l), // SimpleXYSeries takes a List so turn our array into a List
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, // Y_VALS_ONLY means use the element index as the x value
"Series1");
series3 = new SimpleXYSeries(
Arrays.asList(g2), // SimpleXYSeries takes a List so turn our array into a List
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, // Y_VALS_ONLY means use the element index as the x value
"Series1");
//Plot1
//RANGE (Y)
//plot.setRangeBoundaries(min, max, BoundaryMode.FIXED);
plot.setRangeStepValue(10);
widget.getRangeOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje Y
widget.getRangeOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje Y
widget.getRangeLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje Y
plot.setRangeLabel("Amplitud"); //Etiqueta eje Y
plot.getRangeLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje y
// DOMAIN (X)
plot.setDomainBoundaries(0,n.length, BoundaryMode.FIXED);
plot.setDomainStepValue(10);
widget.getDomainOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje X
widget.getDomainOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje X
widget.getDomainLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje X
plot.setDomainLabel("Tiempo");//Etiqueta eje X
plot.getDomainLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje X
//Configs
plot.setTitle("Representación forma de onda");
plot.getTitleWidget().getLabelPaint().setColor(Color.BLACK);
plot.getTitleWidget().getLabelPaint().setTextSize(20);
widget.setMarginRight(25);//para que no corte los numeros del eje X
widget.setMarginTop(10);//para que no corte los numeros del eje Y
plot.getBorderPaint().setColor(Color.TRANSPARENT);
plot.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget.getGridBackgroundPaint().setColor(Color.TRANSPARENT);//Color de la grafica en si (no el layout)
//plot.addSeries(series1, series1Format);
plot.setDomainValueFormat(new DecimalFormat() {
@Override
public StringBuffer format(double value, StringBuffer buffer, FieldPosition field) {
double z=(Main.GRABA/1000.0)/n.length;
double sec = Math.round((value * z)*10.0)/10.0;
return new StringBuffer (sec + " Sec");
}
@Override
public StringBuffer format(long value, StringBuffer buffer, FieldPosition field) {
throw new UnsupportedOperationException("Not yet implemented.");
}
@Override
public Number parse(String string, ParsePosition position) {
throw new UnsupportedOperationException("Not yet implemented.");
}
});
//Plot2
//RANGE (Y)
plot2.setRangeStepValue(12);
widget2.getRangeOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje Y
widget2.getRangeOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje Y
widget2.getRangeLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje Y
plot2.setRangeLabel("Amplitud"); //Etiqueta eje Y
plot2.getRangeLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje y
widget2.setMarginLeft(25);
plot2.setRangeBoundaries(min2, max2, BoundaryMode.FIXED);
// DOMAIN (X)
plot2.setDomainBoundaries(0,n.length, BoundaryMode.FIXED);
plot2.setDomainStepValue(20);
widget2.getDomainOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje X
widget2.getDomainOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje X
widget2.getDomainLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje X
plot2.setDomainLabel("Muestras");//Etiqueta eje X
plot2.getDomainLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje X
//Configs
plot2.setTitle("Representación forma de onda");
plot2.getTitleWidget().getLabelPaint().setColor(Color.BLACK);
plot2.getTitleWidget().getLabelPaint().setTextSize(20);
widget2.setMarginRight(25);//para que no corte los numeros del eje X
widget2.setMarginTop(10);//para que no corte los numeros del eje Y
plot2.getBorderPaint().setColor(Color.TRANSPARENT);
plot2.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget2.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget2.getGridBackgroundPaint().setColor(Color.TRANSPARENT);//Color de la grafica en si (no el layout)
//plot2.addSeries(series2, series1Format);
plot2.setDomainValueFormat(new DecimalFormat() {
@Override
public StringBuffer format(double value, StringBuffer buffer, FieldPosition field) {
double z=(Main.GRABA/1000.0)/n.length;
double sec = Math.round((value * z)*100.0)/100.0;
return new StringBuffer (sec + " Sec");
}
@Override
public StringBuffer format(long value, StringBuffer buffer, FieldPosition field) {
throw new UnsupportedOperationException("Not yet implemented.");
}
@Override
public Number parse(String string, ParsePosition position) {
throw new UnsupportedOperationException("Not yet implemented.");
}
});
//Plot3
//RANGE (Y)
plot3.setRangeStepValue(12);
widget3.getRangeOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje Y
widget3.getRangeOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje Y
widget3.getRangeLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje Y
plot3.setRangeLabel("Amplitud"); //Etiqueta eje Y
plot3.getRangeLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje y
widget3.setMarginLeft(25);
plot3.setRangeBoundaries(minFFT, maxFFT, BoundaryMode.FIXED);
// DOMAIN (X)
plot3.setDomainBoundaries(0,Main.sizeFFT, BoundaryMode.FIXED);
plot3.setDomainStepValue(n.length/1000);
widget3.getDomainOriginLinePaint().setColor(Color.BLACK);//Color linea de origen eje X
widget3.getDomainOriginLabelPaint().setColor(Color.BLACK);// Color etiqueta origen eje X
widget3.getDomainLabelPaint().setColor(Color.BLACK);//Color de las letras/numeros eje X
plot3.setDomainLabel("Muestras");//Etiqueta eje X
plot3.getDomainLabelWidget().getLabelPaint().setColor(Color.BLACK);//Color Etiqueta eje X
//Configs
plot3.setTitle("Representación forma de onda");
plot3.getTitleWidget().getLabelPaint().setColor(Color.BLACK);
plot3.getTitleWidget().getLabelPaint().setTextSize(20);
widget3.setMarginRight(25);//para que no corte los numeros del eje X
widget3.setMarginTop(10);//para que no corte los numeros del eje Y
plot3.getBorderPaint().setColor(Color.TRANSPARENT);
plot3.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget3.getBackgroundPaint().setColor(Color.TRANSPARENT);
widget3.getGridBackgroundPaint().setColor(Color.TRANSPARENT);//Color de la grafica en si (no el layout)
//plot3.addSeries(series3, series1Format);
plot3.setDomainValueFormat(new NumberFormat() {
@Override
public StringBuffer format(double value, StringBuffer buffer, FieldPosition field) {
double f=Math.round(Main.SAMPLES/Main.sizeFFT);
int frec = (int) (value * f) ;
return new StringBuffer(frec + " Hz");
}
@Override
public StringBuffer format(long value, StringBuffer buffer, FieldPosition field) {
throw new UnsupportedOperationException("Not yet implemented.");
}
@Override
public Number parse(String string, ParsePosition position) {
throw new UnsupportedOperationException("Not yet implemented.");
}
});
plot.addSeries(series1, series1Format);
plot2.addSeries(series2, series1Format);
plot3.addSeries(series3, series1Format);
plot.redraw();
plot2.redraw();
plot3.redraw();
Toast.makeText(getApplicationContext(), "Todo cargado", Toast.LENGTH_LONG).show();
}
protected Void doInBackground(Void... unused){
for (int i = 44; i < s; i+=2) {
// convert byte pair to int
double audioSample = (double) (array[i+1] << 8 | array[i] & 0xff)/ 32767.0;
arr[j]=audioSample; //double
n[j] = (Number)arr[j]; //Number
st[j]=10*Math.log10(Math.abs((audioSample/Math.pow(10, -12)))); //double
l[j]=(Number)(10*Math.log10(Math.abs((audioSample/Math.pow(10, -12))))); //Number
if(audioSample == 0.0 ){
if(j!=0){
l[j]=l[j-1];
st[j]=st[j-1];
}else{
l[j]=0.0;
st[j]=0.0;
}
}
//progress++;
publishProgress((i/s)*1000);
j=j+1;}
min=Operaciones.minimum(arr);
max=Operaciones.maximum(arr);
min2=Operaciones.minimum(st);
max2=Operaciones.maximum(st);
/*****************************/
arreaFFT();
return null;
}
}