0

SDカードのファイルをチェックボックス付きのリストビューに表示するコードがあります。パスだけでなく、ファイル全体をロードする可能性があります。ユーザーに 2 つのファイルを選択してから、inputstream へのファイル パスを取得して、それらを 3 番目のファイルにマージする必要があります。

コードは MainActivity.java です

package com.example.joiner;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.List;

import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button mButton;
    private List<Model> list;
private ListView mainListView ;
 public String msg="kumkum";
 File[] sdDirectories;
 ArrayList<String> planetList;
 private List<File> h;




 ArrayAdapter<Model> adapter ;



    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = (Button)findViewById(R.id.Button);
        //mButton.setOnClickListener(this);
        mainListView = (ListView) findViewById( R.id.mainListView );
        mButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {

                int temp;
                //Model[] a=(Model[]) list.toArray();
                for(int i=0;i<list.size();i++)
                {
                    Model b=list.get(i);
                    if(b.isSelected())
                    {
                        //Toast.makeText(MainActivity.this, b.getName(), Toast.LENGTH_LONG).show();
                        for(int counter=0;counter<sdDirectories.length;counter++)
                        {
                            if(b.getName().equals(sdDirectories[counter].getName()))
                            {
                                Toast.makeText(MainActivity.this,sdDirectories[counter].getPath(), Toast.LENGTH_LONG).show();
                                h.add(sdDirectories[counter]);
                                //h.get(0).getPath();
                            }
                        }
                    }
                }

            }



        });
        String extState = Environment.getExternalStorageState();
        //you may also want to add (...|| Environment.MEDIA_MOUNTED_READ_ONLY)
        //if you are only interested in reading the filesystem
        if(!extState.equals(Environment.MEDIA_MOUNTED)) {
          Toast.makeText(MainActivity.this, "no sd card found", Toast.LENGTH_LONG).show();

        }
        else{




            planetList = new ArrayList<String>();
            planetList.add("wajeeh");



            //for(int i=0;i<sdDirectories.length;i++)
            //planetList.add(sdDirectories[i].getName());



            planetList.add(msg);

            adapter = new Inadopter(MainActivity.this,getModel());



// Set the ArrayAdapter as the ListView's adapter.
            mainListView.setAdapter( adapter );



          }
    }
    private List<Model> getModel() {
        list = new ArrayList<Model>();
        list.add(get("Linux"));
        list.add(get("a"));
        // Initially select one of the items
        File sd = Environment.getExternalStorageDirectory();
        FileFilter MP3ANDdirectoryOnly = new FileFilter() {
            private String getExtension(File f) {
                String ext = null;
                String s = f.getName();
                int i = s.lastIndexOf('.');

                if (i > 0 &&  i < s.length() - 1) {
                    ext = s.substring(i+1).toLowerCase();
                }
                return ext;
            }

            public boolean accept(File file) {
                if(file.isDirectory()||!file.isHidden())
                    return true;

                String extension = getExtension(file);
                if (extension != null||!file.isHidden()) {
                    if (extension.equals("mp3"))
                        {
                            return true;
                    }
            }
                return false;
        }};
        sdDirectories = sd.listFiles(MP3ANDdirectoryOnly);
        for(int i=0;i<sdDirectories.length;i++)
            list.add(get(sdDirectories[i].getName()));


        list.get(1).setSelected(true);
        return list;
      }
    private Model get(String s) {
        // TODO Auto-generated method stub
        return new Model(s);
    }
}

`

InAdapter.java

    package com.example.joiner;

import java.util.List;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

public class Inadopter extends ArrayAdapter<Model> {

  private final List<Model> list;
  private final Activity context;

  public Inadopter(Activity context, List<Model> list) {
    super(context, R.layout.simpleroow, list);
    this.context = context;
    this.list = list;
  }

  static class ViewHolder {
    protected TextView text;
    protected CheckBox checkbox;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    if (convertView == null) {
      LayoutInflater inflator = context.getLayoutInflater();
      view = inflator.inflate(R.layout.simpleroow, null);
      final ViewHolder viewHolder = new ViewHolder();
      viewHolder.text = (TextView) view.findViewById(R.id.label);
      viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
      viewHolder.checkbox
          .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
              Model element = (Model) viewHolder.checkbox
                  .getTag();
              element.setSelected(buttonView.isChecked());

            }
          });
      view.setTag(viewHolder);
      viewHolder.checkbox.setTag(list.get(position));
    } else {
      view = convertView;
      ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.text.setText(list.get(position).getName());
    holder.checkbox.setChecked(list.get(position).isSelected());
    return view;
  }
} 

2 つのファイルのパスを取得して、このコードに送信する必要があります

public class ConcateSongActivity extends Activity {
    Button mbutt;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mbutt = (Button)findViewById(R.id.button_Click_Karo);
        mbutt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                try {
                    FileInputStream fis1 = new FileInputStream("/sdcard/viv0.wav");
                    FileInputStream fis2 = new FileInputStream("/sdcard/viv1.wav");
                    SequenceInputStream sis = new SequenceInputStream(fis1,fis2);


                    FileOutputStream fos = new FileOutputStream(new File("/sdcard/vis.wav"));

                    int temp;

                    try {
                        while ((temp = sis.read())!= -1){

                            fos.write(temp);

                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }




                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
        });
    }
}
4

1 に答える 1

0

フィードバック リンクが「この投稿は役に立ちましたか?」という質問に変わります。クリックしようとするとすぐに、回答用に予約された場所に質問を配置する以外に方法がありません。

あなたの問題は何ですか?2 つのパスを抽出したり、2 つのファイルをマージしたりできませんか?

于 2012-12-09T16:46:16.337 に答える