Started on AlbumCover in PlayControl.

This commit is contained in:
Daniel Önnerby 2009-08-11 18:57:11 +00:00
parent 0d486e8ce9
commit cd20260e41
6 changed files with 66 additions and 29 deletions

View File

@ -6,15 +6,15 @@
android:paddingLeft="8dp"
android:paddingRight="8dp" android:gravity="center_vertical|center_horizontal">
<LinearLayout android:id="@+id/LinearLayout01" android:layout_weight="0.5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="left">
<ImageView android:id="@+id/ImageView01" android:src="@drawable/album" android:layout_marginTop="5sp" android:layout_marginBottom="5sp" android:layout_height="200sp" android:layout_width="200sp" android:scaleType="fitXY"></ImageView>
<ImageView android:src="@drawable/album" android:layout_marginTop="5sp" android:layout_marginBottom="5sp" android:layout_height="200sp" android:layout_width="200sp" android:scaleType="fitXY" android:id="@+id/AlbumCover"></ImageView><LinearLayout android:id="@+id/LinearLayout01" android:layout_weight="0.5" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="left" android:layout_width="200sp">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:id="@+id/TrackTitle" android:text="Title:"></TextView>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Album:" android:id="@+id/TrackAlbum"></TextView>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Artists:" android:id="@+id/TrackArtist"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout02" android:layout_weight="0.5" android:layout_width="wrap_content" android:layout_height="wrap_content"></LinearLayout><LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/MediaPrev" android:clickable="true" android:src="@drawable/ic_media_previous" android:adjustViewBounds="true" android:padding="15sp"></ImageButton>
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/MediaPrev" android:src="@drawable/ic_media_previous" android:adjustViewBounds="true" android:padding="15sp"></ImageButton>
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:id="@+id/MediaPause" android:src="@drawable/ic_media_pause" android:padding="15sp"></ImageButton>
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/MediaNext" android:adjustViewBounds="true" android:src="@drawable/ic_media_next" android:padding="15sp"></ImageButton>
</LinearLayout>

View File

@ -5,14 +5,14 @@
<string name="menu_settings">Settings</string>
<string name="menu_help">Help</string>
<string name="host">vallgraven.intermezzon.com</string>
<string name="host"></string>
<string name="username">doep</string>
<string name="password">doep</string>
<string name="username"></string>
<string name="password"></string>
<string name="queryport">10543</string>
<string name="httpport">10544</string>
<color name="headlineColor">#333333</color>

View File

@ -16,4 +16,5 @@
<resources>
</resources>

View File

@ -2,13 +2,13 @@
<PreferenceCategory android:title="Connection">
<EditTextPreference android:key="host" android:enabled="true" android:title="Host" android:dialogMessage="Hostname or IP to musikServer" android:summary="Hostname or IP to musikServer" android:dialogTitle="Host" android:selectable="true" android:defaultValue="vallgraven.intermezzon.com"></EditTextPreference>
<EditTextPreference android:key="host" android:enabled="true" android:title="Host" android:dialogMessage="Hostname or IP to musikServer" android:summary="Hostname or IP to musikServer" android:dialogTitle="Host" android:selectable="true"></EditTextPreference>
<EditTextPreference android:key="queryport" android:enabled="true" android:inputType="number" android:title="Query port" android:dialogMessage="TCP port for querying musikServer" android:summary="TCP port for querying musikServer" android:dialogTitle="Query port" android:defaultValue="10543"></EditTextPreference>
<EditTextPreference android:key="httpport" android:enabled="true" android:inputType="number" android:title="HTTP port" android:dialogMessage="TCP port for streaming music" android:summary="TCP port for streaming music" android:dialogTitle="HTTP port" android:defaultValue="10544"></EditTextPreference>
</PreferenceCategory>
<PreferenceCategory android:title="Authentication">
<EditTextPreference android:key="username" android:enabled="true" android:title="Username" android:summary="Username to identify yourself to the musikServer" android:dialogTitle="Username" android:defaultValue="doep"></EditTextPreference>
<EditTextPreference android:dialogTitle="Password" android:key="password" android:inputType="textPassword" android:enabled="true" android:title="Password" android:summary="Password on the musikServer" android:defaultValue="doep"></EditTextPreference>
<EditTextPreference android:key="username" android:enabled="true" android:title="Username" android:summary="Username to identify yourself to the musikServer" android:dialogTitle="Username"></EditTextPreference>
<EditTextPreference android:dialogTitle="Password" android:key="password" android:inputType="textPassword" android:enabled="true" android:title="Password" android:summary="Password on the musikServer"></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -1,5 +1,9 @@
package org.musikcube;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Timer;
import java.util.TimerTask;
@ -13,6 +17,9 @@ import org.musikcube.core.Player.OnTrackUpdateListener;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
@ -21,7 +28,9 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.DownloadListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
@ -119,7 +128,6 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
protected void onPause() {
Log.v("MC2::PC","OnPause");
Player.GetInstance().SetUpdateListener(null);
//this.timer.cancel();
super.onPause();
}
@Override
@ -127,12 +135,6 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
Log.v("MC2::PC","OnResume");
Player.GetInstance().SetUpdateListener(this);
super.onResume();
// this.timer = new Timer();
/* this.timer.schedule(new TimerTask() { public void run() {
callbackTrackPositionsUpdateHandler.post(callbackTrackPositionsUpdateRunnable);
} }, 100);*/
// this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,100);
}
// Need handler for callbacks to the UI thread
@ -149,8 +151,15 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
TextView albumView = (TextView)findViewById(R.id.TrackAlbum);
TextView artistView = (TextView)findViewById(R.id.TrackArtist);
TextView durationView = (TextView)findViewById(R.id.TrackDuration);
int thumbnailId = 0;
synchronized(lock){
String thumbnailString = this.track.metadata.get("thumbnail_id");
if(thumbnailString!=null){
thumbnailId = Integer.parseInt(thumbnailString);
}
String title = this.track.metadata.get("title");
if(title==null){
titleView.setText("Title:");
@ -183,6 +192,42 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
durationText += Integer.toString(seconds);
durationView.setText(durationText);
}
if(thumbnailId!=0){
// Load image
Library library = Library.GetInstance();
new DownloadAlbumCoverTask().execute("http://"+library.host+":"+library.httpPort+"/cover/?cover_id="+thumbnailId);
}
}
private class DownloadAlbumCoverTask extends AsyncTask<String,Integer,Bitmap>{
protected Bitmap doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection conn= (HttpURLConnection)url.openConnection();
conn.setDoInput(true);
conn.connect();
//int length = conn.getContentLength();
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
return bm;
} catch (Exception e) {
Log.v("mC2:PLAYER","Error "+e.getMessage());
// e.printStackTrace();
return null;
}
}
protected void onPostExecute(Bitmap result){
if(result==null){
}else{
ImageView cover = (ImageView)findViewById(R.id.AlbumCover);
cover.setImageBitmap(result);
}
}
}
// Need handler for callbacks to the UI thread
@ -217,19 +262,8 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
// Next callback in 0.5 seconds
this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,500);
/* this.timer.schedule(new TimerTask() { public void run() {
callbackTrackPositionsUpdateHandler.post(callbackTrackPositionsUpdateRunnable);
} }, 500);*/
}
// private java.util.Timer timer = new java.util.Timer();
/*
gametimer.schedule(new TimerTask() { public void run() {
seconds+=0.1; updatecount();
} }, 100, 100);
*/
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();

View File

@ -94,6 +94,7 @@ public class TrackList extends ListActivity implements OnQueryResultListener {
holder.track = (TextView) view.findViewById(R.id.track);
holder.artist = (TextView) view.findViewById(R.id.artist);
view.setTag(holder);
}else{
holder = (TrackViewHolder)view.getTag();
}
@ -207,13 +208,14 @@ public class TrackList extends ListActivity implements OnQueryResultListener {
intent.putExtra("org.musikcube.Service.position", position);
intent.putExtra("org.musikcube.Service.action", "playlist");
startService(intent);
Intent intent2 = new Intent(this, PlayerControl.class);
startActivity(intent2);
}
@Override
protected void onPause() {
super.onPause();