如何通过的SoundCloud我的应用程序上传音频,我想还可以发送ID到我的服务器 [英] How to upload audio in soundcloud via my app and i want to send that id also to my server

查看:408
本文介绍了如何通过的SoundCloud我的应用程序上传音频,我想还可以发送ID到我的服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我获取音频从的SoundCloud ,我可以流在我的应用程序,音频也,现在的事情就是如何上传音频的SoundCloud ,然后我想的ID发送到我的服务器端也。

I fetching audio from soundcloud and i can stream that audio in my app also,Now the things is how to upload audio to soundcloud and then i want to send the id to my server side also.

我的要求是使用上传按钮,我想从外部存储目录中的文件,然后我想给上传的音频。

My requirement is using the upload button i want to get the file from external storage directory and then i want to send the upload audio.

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          mDbHelper = new GinfyDbAdapter(this);
        setContentView(R.layout.upload_audiogallery);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        upload = (ImageButton) findViewById(R.id.btnupload);
        btnstop = (Button) findViewById(R.id.btnstop);
        //Bundle extras = getIntent().getExtras();  

        token = (Token) this.getIntent().getSerializableExtra("token");
        wrapper = new ApiWrapper("3b70c135a3024d709e97af6b0b686ff3",
                "51ec6f9c19487160b5942ccd4f642053",
                null,
                token);

       //for speech to text and recording purpose           
       setButtonHandlers();
       enableButtons(false);

       mp = new MediaPlayer();  


  upload .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //String rootpath = Environment.getExternalStorageDirectory().getAbsolutePath();
            //loadAllAudios(rootpath);

                     File file = new File("/mnt/sdcard/Download/57FYsUnoWxj2.128.mp3");
                     String path = file.getAbsolutePath();
             new MyAsyncTask().execute(path);
             UploadToSoundCloudTask uploadTask = new UploadToSoundCloudTask(this, wrapper);
            uploadTask.execute(new AudioClip(path));        


        }

  });
  }

 private class UploadToSoundCloudTask extends AsyncTask<AudioClip, Integer, Integer> {
    private Uploadaudiogallery recordActivity;
    private ApiWrapper wrapper;
    private String clipName;

    public UploadToSoundCloudTask(OnClickListener onClickListener, ApiWrapper wrapper) {
        this.recordActivity =  (Uploadaudiogallery) onClickListener;
        this.wrapper = wrapper;
    }

    @SuppressLint("NewApi")
    protected Integer doInBackground(AudioClip... clips) {
        try {
            Log.d("DDDDD", "uploading in background...");

            File audioFile = new File(clips[0].path);
            audioFile.setReadable(true, false);
            HttpResponse resp = wrapper.post(Request.to(Endpoints.TRACKS)

                    .add(Params.Track.TAG_LIST, "demo upload")
                    .withFile(Params.Track.ASSET_DATA, audioFile));
            Log.d("DDDDD", "background thread done...");
            return Integer.valueOf(resp.getStatusLine().getStatusCode());

        } catch (IOException exp) {
            Log.d("DDDDD",
                    "Error uploading audioclip: IOException: "
                            + exp.toString());
            return Integer.valueOf(500);
        }
    }

    protected void onProgressUpdate(Integer... progress) {
    }

    protected void onPostExecute(Integer result) {
        Log.d("DDDDD", "UI thread resume: got result...");
        if (result.intValue() == HttpStatus.SC_CREATED) {
            Toast.makeText(
                    this.recordActivity,
                    "upload successful: "
                            + ": " + clipName, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(
                    this.recordActivity,
                    "Invalid status received: " + result.toString()
                            + ": " + clipName, Toast.LENGTH_SHORT).show();
        }


    }
}

我使用的Java API的封装jar文件also.while单击上传它的展示应用程序了已停止

I used Java api-wrapper jar file also.while click upload its shows applicaiton has stopped

logcat的误差

10-25 10:35:27.203: E/AndroidRuntime(1921): FATAL EXCEPTION: main
10-25 10:35:27.203: E/AndroidRuntime(1921): java.lang.ClassCastException: com.ibetter.Ginfy.Uploadaudiogallery$4 cannot be cast to com.ibetter.Ginfy.Uploadaudiogallery
10-25 10:35:27.203: E/AndroidRuntime(1921):     at com.ibetter.Ginfy.Uploadaudiogallery$UploadToSoundCloudTask.<init>(Uploadaudiogallery.java:85)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at com.ibetter.Ginfy.Uploadaudiogallery$4.onClick(Uploadaudiogallery.java:192)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.view.View.performClick(View.java:4204)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.view.View$PerformClick.run(View.java:17355)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.os.Handler.handleCallback(Handler.java:725)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.os.Looper.loop(Looper.java:137)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at android.app.ActivityThread.main(ActivityThread.java:5041)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at java.lang.reflect.Method.invokeNative(Native Method)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at java.lang.reflect.Method.invoke(Method.java:511)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-25 10:35:27.203: E/AndroidRuntime(1921):     at dalvik.system.NativeStart.main(Native Method)

我怎样才能路径和uplaod音频的SoundCloud,然后发送ID到我的服务器端。

How can i get the path and uplaod audio to soundcloud and then send id to my server side..

推荐答案

替换该

UploadToSoundCloudTask uploadTask = new UploadToSoundCloudTask(this, wrapper); uploadTask.execute(new AudioClip(path)); 

通过

UploadToSoundCloudTask uploadTask = new UploadToSoundCloudTask(ActivtiyName.this, wrapper); uploadTask.execute(new AudioClip(path)); 

在你的情况这个并n要参考上下文活动

In your case this does nto refer to activity context

要上传这里检查样品

<一个href=\"https://github.com/soundcloud/java-api-wrapper/blob/master/src/examples/java/com/soundcloud/api/examples/UploadFile.java\" rel=\"nofollow\">https://github.com/soundcloud/java-api-wrapper/blob/master/src/examples/java/com/soundcloud/api/examples/UploadFile.java

Downalod Java的包装-api.jar文件,并把它添加到libs文件夹

Downalod java-wrapper-api.jar and add it to libs folder

获取音频文件的SD卡,从路径

Get the path of the audio file from sdcard

要uplaod

http://developers.soundcloud.com/docs#uploading

从上面的链接引用

要上传的声音,发送POST请求到/跟踪端点

创建一个包装实例:

ApiWrapper wrapper = new ApiWrapper("client_id", "client_secret", null, null);

获取令牌:

wrapper.login("username", "password");

请POST请求到/跟踪端点。在按钮单击Invoke 的AsyncTask

Make a POST request to the /tracks endpoint. On Button click invoke AsyncTask

class TheTask extends AsyncTask<Void,Void,Void>
{

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
           try {
                wrapper = new ApiWrapper("client_id",
                         "client_secret",
                         null,
                         null);
                token = wrapper.login("username", "password");
                upload();
            } catch (IOException e) {
                e.printStackTrace();
            }

        return null;
    }

}

上传方法。

public void upload()
{
try {
    Log.d("DDDDD", "uploading in background...");
    File audioFile = new File("/mnt/sdcard/Music/A1.mp3");
            // replace the hardcoded path with the path of your audio file
    audioFile.setReadable(true, false);
    HttpResponse resp = wrapper.post(Request.to(Endpoints.TRACKS)
            .add(Params.Track.TITLE, "A1.mp3")
            .add(Params.Track.TAG_LIST, "demo upload")
            .withFile(Params.Track.ASSET_DATA, audioFile));
    Log.i("......",""+Integer.valueOf(resp.getStatusLine().getStatusCode()));
    Log.d("DDDDD", "background thread done...");

} catch (IOException exp) {
    Log.d("DDDDD",
            "Error uploading audioclip: IOException: "
                    + exp.toString());

}
}

这篇关于如何通过的SoundCloud我的应用程序上传音频,我想还可以发送ID到我的服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆