2017年4月23日日曜日

Thread.activeCount()

Thread.activeCount()
返回当前线程的线程组中活动线程的数目。

public class T2 {
        public static void main(String[] args) {
                new Thread(new Runnable() {
                        public void run() {
                                while (true) {
                                        // System.out.println(1);
                                }
                        }
                }).start();
                new Thread(new Runnable() {
                        public void run() {
                                while (true) {
                                        // System.out.println(2);
                                }
                        }
                }).start();
                new Thread(new Runnable() {
                        public void run() {
                                while (true) {
                                        // System.out.println(3);
                                }
                        }
                }).start();
                System.out.println(Thread.activeCount());
        }
}

2017年4月11日火曜日

Java ArrayList to String[]

Java ArrayList to String[]

https://paiza.io/projects/3F_iZEjxHh9AUNgPwAohxA

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws Exception {
        ArrayList<String> sl = new ArrayList<String>();
        sl.add("a");
        sl.add("b");
        sl.add("c");
       
        String[] temp = sl.toArray(new String[]{});
       
        System.out.println(temp.length);
        for( String x:temp){
            System.out.println(x);
        }
    }
}

2017年4月6日木曜日

Android Intent 文件存储 找到文件

Intent 文件存储 找到文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>





    protected void t1() {
        int cc = 100;
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setType("audio/*");
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(intent, cc);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 100 && resultCode == RESULT_OK) {
            Uri uri = data.getData();
            System.out.println(uri);
            Fpath(uri);
        }
    }

    protected void Fpath(Uri uri) {
        ContentResolver contentResolver = getContentResolver();
        long id = ContentUris.parseId(uri);

//      1.  select _id,_data from uri while _id = id;
        String[] select = new String[]{"_id","_data"};
        Cursor cursor = contentResolver.query(uri, select, "_id = " + id, null, null);

//      2.  select * from uri while _id = id;
//        Cursor cursor = contentResolver.query(uri, null, "_id = " + id, null, null);
//      3.  select * from uri;
//        Cursor cursor = contentResolver.query(uri, null, null, null, null);

        while (cursor.moveToNext()) {
            int cont = cursor.getColumnCount();
            for (int i = 0; i < cont; i++) {
                System.out.print(cursor.getColumnName(i) + ">> ");
                System.out.println(cursor.getString(i));
            }
        }
    }


2017年4月5日水曜日

Android MediaPlayer 播放指定文件夾

Android MediaPlayer 播放指定文件夾

   public void PlayList(File file) {
        if (file.isFile()) {
            if (file.isFile()) {
                fileDir = file.getParentFile();
                fileName = file.getName();
            } else {
                fileDir = file;
                fileName = null;
            }
            fileArray = new ArrayList<String>();
            fileDir.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    if (name.endsWith(".mp3") || name.endsWith(".mp4") || name.endsWith(".wav")) {
                        if ((new File(dir, name)).isFile()) {
                            fileArray.add(name);
                            return true;
                        } else {
                            return false;
                        }
                    } else {
                        return false;
                    }
                }
            });

            PlayFile(fileName);
        } else {
            Log.i(TAG, "nofindthefile...................................................");
        }
    }

    public void PlayFile(final String fileName) {
        Log.i(TAG, "FileName" + fileName);
        intNum = fileArray.indexOf(fileName);
        if (intNum == -1) {
            intNum = 0;
        }
        Uri uri = Uri.fromFile(new File(fileDir, fileArray.get(intNum)));
        if (intNum < fileArray.size() - 1) {
            intNum++;
        } else {
            intNum = 0;
        }
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.reset();
        try {
            mediaPlayer.setDataSource(context, uri);
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
            PlayFile(fileArray.get(intNum));
        }
        mediaPlayer.start();
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                PlayFile(fileArray.get(intNum));
            }
        });
    }





2017年4月2日日曜日

Java FilenameFilter

Java FilenameFilter


    public void test() {
        File file = new File(Environment.getExternalStorageDirectory().toString());
        String[] files = file.list(new MusicFilter());
        if (files.length > 0) {
            for (String name : files) {
                System.out.println(name);
            }
        }

        String[] files2 = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if (name.endsWith(".mp3") || name.endsWith(".wav")) {
                    return true;
                } else {
                    return false;
                }
            }
        });

        if (files2.length > 0) {
            for (String name : files2) {
                System.out.println(name);
            }
        }
    }

    public class MusicFilter implements FilenameFilter {

        @Override
        public boolean accept(File dir, String name) {
            if (name.endsWith(".mp3") || name.endsWith(".wav")) {
                return true;
            } else {
                return false;
            }
        }
    }

2017年3月31日金曜日

Android 卡拉OK

Android 卡拉OK


protected void arp() {
        int sampleRateInHz = 44100;
        int rec_bufsize = AudioRecord.getMinBufferSize(sampleRateInHz, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
        int play_bufsize = AudioTrack.getMinBufferSize(sampleRateInHz, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
//        MediaRecorder.AudioSource.MIC
        AudioRecord audioRecord = new AudioRecord(
                MediaRecorder.AudioSource.MIC,
                sampleRateInHz,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                rec_bufsize);
        AudioTrack audioTrack = new AudioTrack(
                AudioManager.STREAM_MUSIC,
                sampleRateInHz,
                AudioFormat.CHANNEL_OUT_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                play_bufsize,
                AudioTrack.MODE_STREAM);
        byte[] temp = new byte[16];
        audioRecord.startRecording();
        audioTrack.play();
        while (!stop) {
            audioRecord.read(temp, 0, temp.length);
            audioTrack.write(temp, 0, temp.length);
        }
        audioTrack.stop();
        audioRecord.stop();
        audioRecord.release();
    }



2017年3月30日木曜日

Android AoundTrack

Android AoundTrack


package com.example.kankanla.start;

import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(this, "AudioTrack.demo", Toast.LENGTH_LONG).show();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    AP();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    protected void AP() throws IOException {
        int sampleRateInHz = 44100;
        int buferSize = AudioTrack.getMinBufferSize(
                sampleRateInHz,
                AudioFormat.CHANNEL_IN_STEREO,
                AudioFormat.ENCODING_PCM_16BIT);
        AudioTrack audioTrack = new AudioTrack(
                AudioManager.STREAM_MUSIC,
                sampleRateInHz,
                AudioFormat.CHANNEL_IN_STEREO,
                AudioFormat.ENCODING_PCM_16BIT,
                buferSize, AudioTrack.MODE_STREAM);

        FileInputStream fileInputStream = new FileInputStream(new File(Environment.getExternalStorageDirectory().toString(), "PCM-D50_441kHz16bit.wav"));
        byte[] buffer = new byte[buferSize];
        int lens = 0;
        audioTrack.play();
        while ((lens = fileInputStream.read(buffer)) != -1) {
            audioTrack.write(buffer, 0, lens);
        }
        System.out.println(audioTrack.getPlayState());
        audioTrack.stop();
        System.out.println(audioTrack.getPlayState());
        System.out.println(Thread.currentThread().getName());

//        public static final int PLAYSTATE_STOPPED = 1;  // matches SL_PLAYSTATE_STOPPED
//        /** indicates AudioTrack state is paused */
//        public static final int PLAYSTATE_PAUSED  = 2;  // matches SL_PLAYSTATE_PAUSED
//        /** indicates AudioTrack state is playing */
//        public static final int PLAYSTATE_PLAYING = 3;  // matches SL_PLAYSTATE_PLAYING
    }
}