java - 在将文件发送到服务器时,Android HttpPost黑屏

时间:2014-02-23 11:57:24

标签: android android-asynctask http-post

我正在将图像和音频文件发送到我的php服务器。我正在使用Asynctask。我的计划中有两项活动。问题是如果我从MainActivity中启动我的第二个活动(AudioActivity),就像这样

upload_audio.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, AudioActivity.class);
        startActivity(intent);
    }

});

然后当我点击按钮upload_audio时,屏幕变黑但该过程仍然成功运行。所以,如果我把这个音频活动我的mainActivity,那么一切都很完美。那么如何在从MainActivity.hope启动活动时处理文件时我的应用程序仍然可见你明白我的问题

这是我的AudioActivity代码

public class AudioActivity extends Activity {

    private static final int SELECT_AUDIO = 2;
    String selectedPath = "";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        upload();
    }


    public void upload() {
        ArrayList<Uri> fileName = getFileList(this);
        for ( int i = 0 ; i < fileName.size() ; i++ )
        {
            try {
                selectedPath = getPath(fileName.get(i)).toString();
                System.out.println(getPath(fileName.get(i)));

                new AudioSync(selectedPath).execute(getPath(fileName.get(i))).get();
                // AudioSync sync = new AudioSync(getPath(fileName.get(i))).get;
                //new AudioSync().execute("").get();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ExecutionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }


    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Audio.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }


    private ArrayList<Uri> getFileList(Context context) {
        Cursor actualimagecursor = null;
        ArrayList<Uri> fileList = new ArrayList<Uri>();
        try
        {
            String[] proj = { MediaStore.Audio.Media.DATA, MediaStore.Audio.Media._ID };
            actualimagecursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj,
                    null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

            int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);

            for ( int i = 0 ; i < actualimagecursor.getCount() ; i++ )
            {
                actualimagecursor.moveToPosition(i);
                String fileName = actualimagecursor.getString(actual_image_column_index);
                fileList.add(( Uri.withAppendedPath( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, fileName )));
            }
            return fileList;
        }
        catch ( Exception e )
        {
            return null;
        }
    }

}

1 个答案:

答案 0 :(得分:2)

您不想创建用于上传或播放音频的活动。活动始终与视图链接,并用于与用户交互。 http://developer.android.com/guide/components/activities.html

您想使用服务来执行此操作:http://developer.android.com/guide/components/services.html