Java 插入声音/音频

Java 插入声音/音频,java,android,sqlite,audio,Java,Android,Sqlite,Audio,我有一个数据库,其中包含一个列表视图和一张图片,我想在每个语音数据中包含它们。我试过了,但是我犯了很多错误。下面是我的java和xml Database.java package com.example.database; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; impo

我有一个数据库,其中包含一个
列表视图
和一张图片,我想在每个语音数据中包含它们。我试过了,但是我犯了很多错误。下面是我的java和xml

Database.java

package com.example.database;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    public class Database extends SQLiteOpenHelper {
    final static String DB_NAME = "db_tum_obat";
public Database(Context context) {
    super(context, DB_NAME, null, 1);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE IF NOT EXISTS tum(_id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, nama_latin TEXT, khasiat TEXT, img BLOB, img2 BLOB)";
    db.execSQL(sql);

    ContentValues values = new ContentValues();
    values.put("_id", "1");
    values.put("nama", "Jarak Pagar");
    values.put("nama_latin", "Jatropha curcas Linn.");
    values.put("khasiat",
            "ketombe, lemah saraf, menghitamkan rambut, rambut rontok, rematik");
    values.put("img", R.drawable.im31);
    values.put("img2", R.drawable.home);// im31 nama file gambar dengan
                                        // ukuran 80 x 80 pixel yang ada di
                                        // folder res/drawable pada project
    db.insert("tum", "_id", values);

    values.put("_id", "2");
    values.put("nama", "Kumis Kucing");
    values.put("nama_latin", "Orthosipon aristatus (B1) Miq.");
    values.put("khasiat",
            "ketombe, lemah saraf, menghitamkan rambut, rambut rontok, rematik");
    values.put("img", R.drawable.im32);
    values.put("img2", R.drawable.keluar1);// im32 nama file gambar dengan
                                        // ukuran 80 x 80 pixel yang ada di
                                        // folder res/drawable pada project
    db.insert("tum", "_id", values);

    values.put("_id", "3");
    values.put("nama", "Lidah Buaya");
    values.put("nama_latin", "Aloe Verra Linn.");
    values.put("khasiat",
            "ketombe, lemah saraf, menghitamkan rambut, rambut rontok, rematik");
    values.put("img", R.drawable.im33);
    values.put("img2", R.drawable.home);// im33 nama file gambar dengan
                                        // ukuran 80 x 80 pixel yang ada di
                                        // folder res/drawable pada project
    db.insert("tum", "_id", values);

    values.put("_id", "4");
    values.put("nama", "Pandan Wangi");
    values.put("nama_latin", "Pandanus amryllifolius Roxb");
    values.put("khasiat",
            "ketombe, lemah saraf, menghitamkan rambut, rambut rontok, rematik");
    values.put("img", R.drawable.im34);
    values.put("img2", R.drawable.keluar1);// im34 nama file gambar dengan
                                        // ukuran 80 x 80 pixel yang ada di
                                        // folder res/drawable pada project
    db.insert("tum", "_id", values);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS tum");
    onCreate(db);

}

}
MainActivity.java

package com.example.database;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
protected ListView lv;
protected ListAdapter adapter;
SQLiteDatabase db;
Cursor cursor;
EditText et_db;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    db = (new Database(this)).getWritableDatabase();
    lv = (ListView) findViewById(R.id.lv);
    et_db = (EditText) findViewById(R.id.et);

    try {
        cursor = db.rawQuery("SELECT * FROM tum ORDER BY nama ASC", null);
        adapter = new SimpleCursorAdapter(this, R.layout.isi_lv, cursor,
                new String[] { "nama", "nama_latin", "img" }, new int[] {
                        R.id.tv_nama, R.id.tv_penyebab, R.id.imV });
        lv.setAdapter(adapter);
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                detail(position);

            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

}

@SuppressWarnings("deprecation")
public void search_db(View v) {
    String edit_db = et_db.getText().toString();
    if (!edit_db.equals("")) {
        try {
            cursor = db.rawQuery("SELECT * FROM tum WHERE nama LIKE ?",
                    new String[] { "%" + edit_db + "%" });
            adapter = new SimpleCursorAdapter(this, R.layout.isi_lv,
                    cursor, new String[] { "nama", "nama_latin", "img" },
                    new int[] { R.id.tv_nama, R.id.tv_penyebab, R.id.imV });
            if (adapter.getCount() == 0) {
                Toast.makeText(
                        this,
                        "Tidak ditemukan data dengan kata kunci " + edit_db
                                + "", Toast.LENGTH_SHORT).show();
            } else {
                lv.setAdapter(adapter);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        try {
            cursor = db.rawQuery("SELECT * FROM tum ORDER BY nama ASC",
                    null);
            adapter = new SimpleCursorAdapter(this, R.layout.isi_lv,
                    cursor, new String[] { "nama", "nama_latin", "img" },
                    new int[] { R.id.tv_nama, R.id.tv_penyebab, R.id.imV });
            lv.setAdapter(adapter);
            lv.setTextFilterEnabled(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public void detail(int position) {
    int im2 = 0;
    String _id = "";
    String nama = "";
    String latin = "";
    String khasiat = "";
    if (cursor.moveToFirst()) {
        cursor.moveToPosition(position);
        im2 = cursor.getInt(cursor.getColumnIndex("img2"));
        nama = cursor.getString(cursor.getColumnIndex("nama"));
        latin = cursor.getString(cursor.getColumnIndex("nama_latin"));
        khasiat = cursor.getString(cursor.getColumnIndex("khasiat"));
    }

    Intent iIntent = new Intent(this, DetailTum.class);
    iIntent.putExtra("dataIM2", im2);
    iIntent.putExtra("dataNama", nama);
    iIntent.putExtra("dataLatin", latin);
    iIntent.putExtra("dataKhasiat", khasiat);
    setResult(RESULT_OK, iIntent);
    startActivityForResult(iIntent, 99);
}

 }
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF567"
android:orientation="vertical"
tools:context=".MainActivity" >

<EditText
    android:id="@+id/et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/btn" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:onClick="search_db"
    android:text="Search" />

<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et" >
</ListView>

isi_lv.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/imV"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/tv_nama"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/imV"
    android:text="TextView"
    android:textSize="10pt" />

<TextView
    android:id="@+id/tv_penyebab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/tv_nama"
    android:layout_below="@+id/tv_nama"
    android:text="TextView" />

detail.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF567"
android:orientation="vertical" >


<ImageView
    android:id="@+id/iv_detail2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Nama" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvNama"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Nama Latin" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvLatin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Khasiat" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvKhasiat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>
</TableLayout>


如果要保存路径,请按Telthien说的做


如果要将文件作为一个整体保存,可以将数据保存为BLOB类型

与其尝试将声音存储在数据库中,不如尝试存储声音文件的路径。然后,将声音文件存储在一个可访问的地方。我已经尝试过了,但没有成功。你说的“没有成功”是什么意思?Telthien为你指出了正确的方向。您的问题与在SQLite中存储声音数据关系不大,而与如何正确存储和访问声音文件关系更大。当你还没有完全探索到正确的道路时,不要依赖于胡乱猜测。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF567"
android:orientation="vertical" >


<ImageView
    android:id="@+id/iv_detail2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Nama" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvNama"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Nama Latin" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvLatin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Khasiat" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":" />

        <TextView
            android:id="@+id/tvKhasiat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>
</TableLayout>