mirror of
https://github.com/clangen/musikcube.git
synced 2024-10-02 13:02:35 +00:00
Started on AlbumCover in PlayControl.
This commit is contained in:
parent
0d486e8ce9
commit
cd20260e41
@ -6,15 +6,15 @@
|
|||||||
android:paddingLeft="8dp"
|
android:paddingLeft="8dp"
|
||||||
android:paddingRight="8dp" android:gravity="center_vertical|center_horizontal">
|
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: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">
|
||||||
<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>
|
|
||||||
<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: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="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>
|
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Artists:" android:id="@+id/TrackArtist"></TextView>
|
||||||
</LinearLayout>
|
</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">
|
<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: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>
|
<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>
|
</LinearLayout>
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
<string name="menu_settings">Settings</string>
|
<string name="menu_settings">Settings</string>
|
||||||
<string name="menu_help">Help</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="username"></string>
|
||||||
<string name="password">doep</string>
|
<string name="password"></string>
|
||||||
<string name="queryport">10543</string>
|
<string name="queryport">10543</string>
|
||||||
<string name="httpport">10544</string>
|
<string name="httpport">10544</string>
|
||||||
<color name="headlineColor">#333333</color>
|
<color name="headlineColor">#333333</color>
|
||||||
|
@ -16,4 +16,5 @@
|
|||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<PreferenceCategory android:title="Connection">
|
<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="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>
|
<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>
|
||||||
<PreferenceCategory android:title="Authentication">
|
<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: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" 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"></EditTextPreference>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package org.musikcube;
|
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.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
@ -13,6 +17,9 @@ import org.musikcube.core.Player.OnTrackUpdateListener;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -21,7 +28,9 @@ import android.view.MenuInflater;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
import android.webkit.DownloadListener;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@ -119,7 +128,6 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
|
|||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
Log.v("MC2::PC","OnPause");
|
Log.v("MC2::PC","OnPause");
|
||||||
Player.GetInstance().SetUpdateListener(null);
|
Player.GetInstance().SetUpdateListener(null);
|
||||||
//this.timer.cancel();
|
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@ -127,12 +135,6 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
|
|||||||
Log.v("MC2::PC","OnResume");
|
Log.v("MC2::PC","OnResume");
|
||||||
Player.GetInstance().SetUpdateListener(this);
|
Player.GetInstance().SetUpdateListener(this);
|
||||||
super.onResume();
|
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
|
// 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 albumView = (TextView)findViewById(R.id.TrackAlbum);
|
||||||
TextView artistView = (TextView)findViewById(R.id.TrackArtist);
|
TextView artistView = (TextView)findViewById(R.id.TrackArtist);
|
||||||
TextView durationView = (TextView)findViewById(R.id.TrackDuration);
|
TextView durationView = (TextView)findViewById(R.id.TrackDuration);
|
||||||
|
|
||||||
|
int thumbnailId = 0;
|
||||||
|
|
||||||
synchronized(lock){
|
synchronized(lock){
|
||||||
|
String thumbnailString = this.track.metadata.get("thumbnail_id");
|
||||||
|
if(thumbnailString!=null){
|
||||||
|
thumbnailId = Integer.parseInt(thumbnailString);
|
||||||
|
}
|
||||||
|
|
||||||
String title = this.track.metadata.get("title");
|
String title = this.track.metadata.get("title");
|
||||||
if(title==null){
|
if(title==null){
|
||||||
titleView.setText("Title:");
|
titleView.setText("Title:");
|
||||||
@ -183,6 +192,42 @@ public class PlayerControl extends Activity implements OnTrackUpdateListener, On
|
|||||||
durationText += Integer.toString(seconds);
|
durationText += Integer.toString(seconds);
|
||||||
durationView.setText(durationText);
|
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
|
// 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
|
// Next callback in 0.5 seconds
|
||||||
this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,500);
|
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) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
|
@ -94,6 +94,7 @@ public class TrackList extends ListActivity implements OnQueryResultListener {
|
|||||||
holder.track = (TextView) view.findViewById(R.id.track);
|
holder.track = (TextView) view.findViewById(R.id.track);
|
||||||
holder.artist = (TextView) view.findViewById(R.id.artist);
|
holder.artist = (TextView) view.findViewById(R.id.artist);
|
||||||
view.setTag(holder);
|
view.setTag(holder);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
holder = (TrackViewHolder)view.getTag();
|
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.position", position);
|
||||||
intent.putExtra("org.musikcube.Service.action", "playlist");
|
intent.putExtra("org.musikcube.Service.action", "playlist");
|
||||||
startService(intent);
|
startService(intent);
|
||||||
|
|
||||||
Intent intent2 = new Intent(this, PlayerControl.class);
|
Intent intent2 = new Intent(this, PlayerControl.class);
|
||||||
startActivity(intent2);
|
startActivity(intent2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
Loading…
Reference in New Issue
Block a user