` public class SpeedTestTask extends AsyncTask<Void, Void, String> {
SpeedTestSocket speedTestSocket = new SpeedTestSocket();
@Override
protected String doInBackground(Void... params) {
// add a listener to wait for speed test completion and progress
speedTestSocket.addSpeedTestListener(new ISpeedTestListener() {
@Override
public void onDownloadFinished(SpeedTestReport report) {
// called when download is finished
System.out.println("[DL FINISHED] rate in octet/s : " + report.getTransferRateOctet());
BigDecimal a = new BigDecimal("1048576");
System.out.println("[DL FINISHED] rate in Mbit/s : " + report.getTransferRateBit().divide(a));
olddownloadspeed = report.getTransferRateBit().divide(a);
downloadspeed = olddownloadspeed.setScale(2,RoundingMode.FLOOR);
if (startType == 6){
startType = 1;
speedTestSocket.startFixedUpload("2.testdebit.info", 80, "/", 100000000, 30000,500);
}
else if (startType >= 1){
startType++;
speedTestSocket.startFixedDownload("2.testdebit.info", 80, "/fichiers/10Mo.dat", 10000,500);
}
}
@Override
public void onDownloadError(SpeedTestError speedTestError, String errorMessage) {
// called when a download error occur
}
@Override
public void onUploadFinished(SpeedTestReport report) {
// called when an upload is finished
System.out.println("[UL FINISHED] rate in octet/s : " + report.getTransferRateOctet());
BigDecimal a = new BigDecimal("1048576");
System.out.println("[UL FINISHED] rate in Mbit/s : " + report.getTransferRateBit().divide(a));
olduploadspeed = report.getTransferRateBit().divide(a);
uploadspeed = olduploadspeed.setScale(2,RoundingMode.FLOOR);
enablebutton = true;
}
@Override
public void onUploadError(SpeedTestError speedTestError, String errorMessage) {
// called when an upload error occur
}
@Override
public void onDownloadProgress(float percent, SpeedTestReport report) {
// called to notify download progress
enablebutton = false;
if(forcetoStop == true){
speedTestSocket.forceStopTask();
speedTestSocket.clearListeners();
speedTestSocket.closeSocket();
downloadspeed = BigDecimal.ZERO;
uploadspeed = BigDecimal.ZERO;
}
else{
System.out.println("[DL PROGRESS] progress : " + percent + "%");
System.out.println("[DL PROGRESS] rate in octet/s : " + report.getTransferRateOctet());
BigDecimal a = new BigDecimal("1048576");
System.out.println("[DL PROGRESS] rate in Mbit/s : " + report.getTransferRateBit().divide(a));
olddownloadspeed = report.getTransferRateBit().divide(a);
downloadspeed = olddownloadspeed.setScale(2,RoundingMode.FLOOR);
}
}
@Override
public void onUploadProgress(float percent, SpeedTestReport report) {
// called to notify upload progress
if(forcetoStop == true){
speedTestSocket.forceStopTask();
speedTestSocket.clearListeners();
speedTestSocket.closeSocket();
uploadspeed = BigDecimal.ZERO;
downloadspeed = BigDecimal.ZERO;
}
else{
System.out.println("[UL PROGRESS] progress : " + percent + "%");
System.out.println("[UL PROGRESS] rate in octet/s : " + report.getTransferRateOctet());
BigDecimal a = new BigDecimal("1048576");
System.out.println("[UL PROGRESS] rate in Mbit/s : " + report.getTransferRateBit().divide(a));
olduploadspeed = report.getTransferRateBit().divide(a);
uploadspeed = olduploadspeed.setScale(2,RoundingMode.FLOOR);
}
}
@Override
public void onInterruption() {
// triggered when forceStopTask is called
if(forcetoStop == true){
speedTestSocket.forceStopTask();
speedTestSocket.clearListeners();
speedTestSocket.closeSocket();
uploadspeed = BigDecimal.ZERO;
downloadspeed = BigDecimal.ZERO;
}
else{
startAgain();
}}
});
if(startType == 6){
speedTestSocket.startFixedUpload("2.testdebit.info", 80, "/", 100000000, 30000,500);
startType = 1;
}
else if(startType >= 1){
speedTestSocket.startFixedDownload("2.testdebit.info", 80, "/fichiers/10Mo.dat", 10000,500);
startType++;
}
return null;
}
}
public void startAgain(){
new SpeedTestTask().execute();
}`
I try to get download and upload values. I changed my methods several times but i get irrelevant values from download speeds such as 5mbps and after short time 30mbps and then 5 or 1. But i get upload speeds usually relevant values. Now i downloaded 5 times 10mb but values its not relevant always. In past i downloaded 100mb but this problem was same. How can i solve this problem? If i change download or upload adress, is that value can be relevant?
` public class SpeedTestTask extends AsyncTask<Void, Void, String> {
I try to get download and upload values. I changed my methods several times but i get irrelevant values from download speeds such as 5mbps and after short time 30mbps and then 5 or 1. But i get upload speeds usually relevant values. Now i downloaded 5 times 10mb but values its not relevant always. In past i downloaded 100mb but this problem was same. How can i solve this problem? If i change download or upload adress, is that value can be relevant?