Android Studio et l'API Echo Nest (connexion au serveur)
Bonjour,
Je suis nouveau sur le forum et débutant en Java et Android studio.
J'essaye de coder une application android qui détecte le BPM d'une musique.
J'utilise l'API Echo Nest. Tout marche bien en console tant sur eclipse que sur android studio.
Le problème réside dans l'application mobile que nous n'arrivons pas à connecter au serveur d'echonest.
Nous ne connaissons pas le JQuery et le Json mais avons essayé de l'utiliser sans succès jusqu'à présent.
Je vous envoie le code ci-joint et vous remercie d'avance pour vos réponses.
Main Activity
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
package com.example.sma.musicforrun;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import com.echonest.api.v4.EchoNestAPI;
import com.echonest.api.v4.EchoNestException;
import com.echonest.api.v4.Track;
import java.io.File;
import java.io.IOException;
public class MainActivity extends ActionBarActivity {
TextView textbpm;
TextView titre;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
double bpm=0;
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
boolean wifi = networkInfo.getType() == ConnectivityManager.TYPE_WIFI;
Log.d("NetworkState", "Interface connexion wifi : " + wifi);
}
try{
bpm = calculbpm();
}catch(EchoNestException e){
System.err.println("Trouble with EchoNestException");
}
String bpm2 = String.valueOf(bpm);
textbpm = (TextView)findViewById(R.id.txtbpm);
textbpm.setText(bpm2);
}
public double calculbpm () throws EchoNestException {
double bpm =0;
EchoNestAPI en = new EchoNestAPI("IZXIFD2IFPOZX5X9C");
String path = "/storage/extSdCard/113 - Partir Loin.mp3";
titre = (TextView)findViewById(R.id.titre);
File file = new File(path);
if (!file.exists()) {
System.err.println("Can't find " + path);
titre.setText("Can't find" + path);
} else {
try {
System.out.println("Upload Track, please wait ...");
titre.setText("Upload Track, please wait ...");
Track track = en.uploadTrack(file, false);
titre.setText("End of upload!");
track.waitForAnalysis(30000);
System.out.println("End of upload!");
titre.setText("End of upload!");
if (track.getStatus() == Track.AnalysisStatus.COMPLETE) {
System.out.println("Tempo: " + track.getTempo());
bpm = track.getTempo();
} else {
System.err.println("Trouble analysing track " + track.getStatus());
}
} catch (IOException e) { //IOException e
System.err.println("Trouble uploading file");
}
}
return bpm;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
} |
Et le Manifest
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<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> |