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>