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
    }
}

2017年3月26日日曜日

Android ContentProvider 内容提供程序單元測試

ContentProvider 内容提供程序單元測試

public class youContentProviderTest {
    @Test
    public void delete() throws Exception {
        Context context = InstrumentationRegistry.getContext();
        ContentResolver contentResolver = context.getContentResolver();
        Uri uri = Uri.parse("content://com.kankanla.e560.m0325a.youContentProvider/categoly/delete/");
        int i = contentResolver.delete(uri, "rowid > ?", new String[]{"10"});
        System.out.println("77777777777777777777777777777777");
        System.out.println(i);
    }

    @Test
    public void insert() throws Exception {
        Context context = InstrumentationRegistry.getContext();
        ContentResolver contentResolver = context.getContentResolver();
        Uri uri = Uri.parse("content://com.kankanla.e560.m0325a.youContentProvider/category/insert/1");
        System.out.println("11111111111111111111111111111111111111111");
        System.out.println(uri.getAuthority());
        System.out.println(uri.getPath());
        System.out.println(uri.getPathSegments());
        System.out.println("2222222222222222222222222222222222222222222");
        ContentValues contentValues = new ContentValues();
        contentValues.put("category_name", "日本語");
        for (int i = 0; i < 10; i++) {
            Uri uri1 = contentResolver.insert(uri, contentValues);
            System.out.println(uri1.toString());
        }
    }

}




package com.kankanla.e560.m0325a;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

/**
 * Created by E560 on 2017/03/25.
 */

public class youContentProvider extends ContentProvider {
    private static final String TAG = "youContentProvider";
    private static YouDB youDB;
    private static UriMatcher uriMatcher;
    private static final String AUTHORITY = "com.kankanla.e560.m0325a.youContentProvider";

    private static final int insert_category = 1;
    private static final int select_category = 2;
    private static final int insert_list = 3;
    private static final int select_list = 4;
    private static final int matcher_all = 5;
    private static final int del_category = 6;
    private static final int error = 9;

    static {
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(AUTHORITY, "list/insert", insert_list);
        uriMatcher.addURI(AUTHORITY, "category/insert", insert_category);
        uriMatcher.addURI(AUTHORITY, "category/insert/#", insert_category);
        uriMatcher.addURI(AUTHORITY, "category/delete/", del_category);
        uriMatcher.addURI(AUTHORITY, "*/*/*", error);
    }

    @Override
    public boolean onCreate() {
        youDB = new YouDB(getContext());
        SQLiteDatabase sqLiteDatabase = youDB.getReadableDatabase();
        sqLiteDatabase.isReadOnly();
        System.out.println("888888888888888888888888888888888888888888");
        Log.i(TAG, String.valueOf(sqLiteDatabase.isOpen()));
        return sqLiteDatabase.isOpen();
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        return null;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        Uri uri1 = Uri.parse(uri.getAuthority() + uri.getPath());
        int i = uriMatcher.match(uri);
        System.out.println(i);
        long cont = 0;
        System.out.println("000000000000000000000000000000000000000000000000");
        SQLiteDatabase sqLiteDatabase = youDB.getWritableDatabase();
        switch (i) {
            case insert_category:
                cont = sqLiteDatabase.insert("category", null, values);
                uri1 = ContentUris.withAppendedId(Uri.parse(uri.getAuthority() + uri.getPath()), cont);
                break;
            case insert_list:
                cont = sqLiteDatabase.insert("list", null, values);
                uri1 = ContentUris.withAppendedId(Uri.parse(uri.getAuthority() + uri.getPath()), cont);
                break;
        }
        System.out.println(uri1.toString());
        sqLiteDatabase.close();
        return uri1;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        int flag = uriMatcher.match(uri);
        int con = 0;
        SQLiteDatabase sqLiteDatabase = youDB.getWritableDatabase();
        switch (flag) {
            case del_category:
                con = sqLiteDatabase.delete("category", selection, selectionArgs);
                break;
        }
        sqLiteDatabase.close();
        return con;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }

    private class YouDB extends SQLiteOpenHelper {
        private static final String name = "m0325.db";
        private static final int version = 1;

        public YouDB(Context context) {
            super(context, name, null, version);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql_category = "create table category(rowid INTEGER PRIMARY KEY AUTOINCREMENT, category_name TEXT NOT NULL)";
            String sql_index = "create table list (rowid INTEGER PRIMARY KEY AUTOINCREMENT, category_id INTEGER NOT NULL,comment TEXT)";
            db.execSQL(sql_category);
            db.execSQL(sql_index);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
    }

}





2017年3月19日日曜日

android adb error (10061)

解決步驟

C:\Users>adb devices
List of devices attached
cc13094de        device

C:\Users>adb connect 192.168.11.100
unable to connect to 192.168.11.100:5555: cannot connect to 192.168.11.100:5555: 対象のコンピューターによって拒否された ため、接続できませんでした。 (10061)

C:\Users>adb kill-server

C:\Users>adb usb
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting in USB mode

C:\Users>adb tcpip 5555
restarting in TCP mode port: 5555

C:\Users>adb connect 192.168.11.100
connected to 192.168.11.100:5555

C:\Users>adb devices
List of devices attached
192.168.11.100:5555     device
cc13094de        device

2017年3月17日金曜日

Andriod Intent Camera

Andriod Intent Camera



public class MainActivity extends AppCompatActivity {
    protected File file;
    protected Uri uri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        t1();
    }

    protected void t1() {
        file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "00000aaaa.jpg");
        uri = Uri.fromFile(file);
        Intent intent = new Intent();
        intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        startActivityForResult(intent, 99);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 99 && resultCode == RESULT_OK) {
            view2();
        }
    }

    protected void view2() {
        Display display = getWindowManager().getDefaultDisplay();
        Point p = new Point();
        display.getSize(p);

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(file.getAbsolutePath(), options);

        int samsize = Math.max(options.outHeight / p.y, options.outWidth / p.x);
        options.inJustDecodeBounds = false;
        options.inSampleSize = samsize;

        ImageView imageView = (ImageView) findViewById(R.id.vvvv);
        Bitmap bt = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
        imageView.setImageBitmap(bt);
    }
}