[musikcube] r373 committed - Fixed some timer bug in PlayerControl. ...

0 views
Skip to first unread message

codesite...@google.com

unread,
Aug 10, 2009, 4:38:06 PM8/10/09
to musikc...@googlegroups.com
Revision: 373
Author: onnerby
Date: Mon Aug 10 13:37:02 2009
Log: Fixed some timer bug in PlayerControl.
Added notification when playing.
Added a landscape layout for PlayerControl.
http://code.google.com/p/musikcube/source/detail?r=373

Added:
/trunk/src/android/res/layout-land
/trunk/src/android/res/layout-land/play_control.xml
Modified:
/trunk/src/android/res/layout/track_list_item.xml
/trunk/src/android/src/org/musikcube/PlayerControl.java
/trunk/src/android/src/org/musikcube/Service.java
/trunk/src/android/src/org/musikcube/TrackList.java
/trunk/src/android/src/org/musikcube/core/Player.java

=======================================
--- /dev/null
+++ /trunk/src/android/res/layout-land/play_control.xml Mon Aug 10 13:37:02
2009
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp" android:gravity="center_vertical">
+
+<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="horizontal"
android:gravity="center_vertical|center_horizontal">
+ <ImageView android:id="@+id/ImageView01" android:src="@drawable/album"
android:layout_height="200sp" android:layout_width="200sp"
android:scaleType="fitXY" android:layout_marginRight="10sp"></ImageView>
+ <LinearLayout android:id="@+id/LinearLayout01"
android:layout_height="wrap_content" android:orientation="vertical"
android:layout_width="wrap_content">
+ <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 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: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>
+ </LinearLayout>
+</LinearLayout>
+
+
+
+
+<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
+ <TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="0:00"
android:id="@+id/TrackPosition" android:typeface="monospace"></TextView>
+ <TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="0:00"
android:id="@+id/TrackDuration" android:typeface="monospace"
android:gravity="right"></TextView>
+
+</LinearLayout>
+<SeekBar android:layout_height="wrap_content"
android:layout_width="fill_parent" android:max="1000"
android:progress="300" android:secondaryProgress="100"
android:id="@+id/TrackProgress"></SeekBar>
+</LinearLayout>
=======================================
--- /trunk/src/android/res/layout/track_list_item.xml Sun Aug 9 15:24:12
2009
+++ /trunk/src/android/res/layout/track_list_item.xml Mon Aug 10 13:37:02
2009
@@ -4,17 +4,17 @@
android:layout_height="fill_parent"
android:orientation="horizontal">

<TextView android:id="@+id/track"
- android:layout_width="24sp"
- android:layout_height="wrap_content" android:textSize="24sp"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text="1."/>
+ android:layout_width="32sp"
+ android:layout_height="wrap_content" android:textSize="24sp"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text=""/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/title"
android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:textSize="24sp"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text="Track"/>
+ android:layout_height="wrap_content" android:textSize="24sp"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text=""/>
<TextView android:id="@+id/artist"
android:layout_width="fill_parent"
- android:layout_height="wrap_content"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text="Track"
android:textColor="#999999" android:textSize="16sp"/>
+ android:layout_height="wrap_content"
android:fadingEdge="horizontal" android:maxLines="1"
android:fadingEdgeLength="10sp" android:text="" android:textColor="#999999"
android:textSize="16sp"/>
</LinearLayout>

</LinearLayout>
=======================================
--- /trunk/src/android/src/org/musikcube/PlayerControl.java Sun Aug 9
13:57:19 2009
+++ /trunk/src/android/src/org/musikcube/PlayerControl.java Mon Aug 10
13:37:02 2009
@@ -15,6 +15,7 @@
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -35,6 +36,7 @@

@Override
public void onCreate(Bundle savedInstanceState) {
+ Log.v("MC2::PC","OnCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.play_control);

@@ -43,7 +45,8 @@
ImageButton pauseButton =
(ImageButton)findViewById(R.id.MediaPause);
pauseButton.setOnClickListener(this.onPauseClick);

- }
+
this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,100);
+ }

private OnClickListener onNextClick = new OnClickListener() {
public void onClick(View v){
@@ -114,19 +117,22 @@

@Override
protected void onPause() {
+ Log.v("MC2::PC","OnPause");
Player.GetInstance().SetUpdateListener(null);
- this.timer.cancel();
+ //this.timer.cancel();
super.onPause();
}
@Override
protected void onResume() {
+ Log.v("MC2::PC","OnResume");
Player.GetInstance().SetUpdateListener(this);
super.onResume();

- this.timer = new Timer();
- this.timer.schedule(new TimerTask() { public void run() {
+// this.timer = new Timer();
+/* this.timer.schedule(new TimerTask() { public void run() {

callbackTrackPositionsUpdateHandler.post(callbackTrackPositionsUpdateRunnable);
- } }, 100);
+ } }, 100);*/
+//
this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,100);
}

// Need handler for callbacks to the UI thread
@@ -210,12 +216,13 @@
}

// Next callback in 0.5 seconds
- this.timer.schedule(new TimerTask() { public void run() {
+
this.callbackTrackPositionsUpdateHandler.postDelayed(callbackTrackPositionsUpdateRunnable,500);
+/* this.timer.schedule(new TimerTask() { public void run() {

callbackTrackPositionsUpdateHandler.post(callbackTrackPositionsUpdateRunnable);
- } }, 500);
+ } }, 500);*/
}

- private java.util.Timer timer = new java.util.Timer();
+// private java.util.Timer timer = new java.util.Timer();

/*
gametimer.schedule(new TimerTask() { public void run() {
=======================================
--- /trunk/src/android/src/org/musikcube/Service.java Wed Aug 5 16:16:30
2009
+++ /trunk/src/android/src/org/musikcube/Service.java Mon Aug 10 13:37:02
2009
@@ -6,6 +6,10 @@
import org.musikcube.core.Library;
import org.musikcube.core.Player;

+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
import android.content.Intent;
import android.os.IBinder;

@@ -78,6 +82,30 @@
//Log.i("musikcube::Service","Shutdown");
this.stopSelf();
}
+ if(action.equals("player_start")){
+ String ns = Context.NOTIFICATION_SERVICE;
+ NotificationManager mNotificationManager = (NotificationManager)
getSystemService(ns);
+ int icon = R.drawable.mc_notify;
+ CharSequence tickerText = "musikCube is playing";
+ long when = System.currentTimeMillis();
+ Notification notification = new Notification(icon, tickerText, when);
+ Context context = getApplicationContext();
+ CharSequence contentTitle = "musikCube";
+ CharSequence contentText = "is playing!";
+ Intent notificationIntent = new Intent(this, PlayerControl.class);
+ PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
+
+ notification.flags |= Notification.FLAG_ONGOING_EVENT|
Notification.FLAG_NO_CLEAR;
+
+ notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
+ mNotificationManager.notify(1, notification);
+ }
+
+ if(action.equals("player_end")){
+ String ns = Context.NOTIFICATION_SERVICE;
+ NotificationManager mNotificationManager = (NotificationManager)
getSystemService(ns);
+ mNotificationManager.cancel(1);
+ }

// if(intent
getIntegerArrayListExtra("org.musikcube.Service.tracklist")!=null){

=======================================
--- /trunk/src/android/src/org/musikcube/TrackList.java Sun Aug 9 15:24:12
2009
+++ /trunk/src/android/src/org/musikcube/TrackList.java Mon Aug 10 13:37:02
2009
@@ -19,6 +19,9 @@
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
@@ -127,43 +130,7 @@
}

}
- /*
- private class TrackItemView extends LinearLayout {
- public TrackItemView(Context context, Track track) {
- super(context);
- this.setOrientation(VERTICAL);
-
- mTitle = new TextView(context);
- mTitle.setTextSize(22);
- this.SetTitles(track);
- addView(mTitle, new LinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
-
- }
-
- public void SetTitles(Track track) {
- if(track!=null){
- String text = "";
- String trackNumber = track.metadata.get("track");
- String title = track.metadata.get("title");
- if(trackNumber!=null){
- text += trackNumber+". ";
- }
- if(title!=null){
- text += title;
- }
- if(!text.equals("")){
- mTitle.setText(text);
- }else{
- mTitle.setText("unknown");
- }
- }else{
- mTitle.setText("loading");
- }
- }
-
- private TextView mTitle;
- }*/
+

private ResultAdapter listAdapter;

@@ -304,5 +271,29 @@
}
return true;
}
+
+
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.default_menu, menu);
+ return true;
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item) {
+
//Log.i("MC2.onContextItemSelected","item "+item.getItemId()+" "+R.id.context_settings);
+ switch (item.getItemId()) {
+ case R.id.context_settings:
+ startActivity(new Intent(this, org.musikcube.Preferences.class));
+ return true;
+ case R.id.context_browse:
+ startActivity(new Intent(this, org.musikcube.main.class));
+ return true;
+ case R.id.context_controls:
+ startActivity(new Intent(this, org.musikcube.PlayerControl.class));
+ return true;
+ default:
+ return super.onContextItemSelected(item);
+ }
+ }

}
=======================================
--- /trunk/src/android/src/org/musikcube/core/Player.java Sun Aug 9
15:24:12 2009
+++ /trunk/src/android/src/org/musikcube/core/Player.java Mon Aug 10
13:37:02 2009
@@ -146,6 +146,10 @@
if(this.library==null){
this.library = Library.GetInstance();
this.library.AddPointer();
+
+ Intent intent = new Intent(this.service, org.musikcube.Service.class);
+ intent.putExtra("org.musikcube.Service.action", "player_start");
+ this.service.startService(intent);
}
}
}
@@ -155,22 +159,22 @@
if(this.library!=null){
this.library.RemovePointer();
this.library = null;
-/*
+
Intent intent = new Intent(this.service, org.musikcube.Service.class);
- intent.putExtra("org.musikcube.Service.action", "player ended");
+ intent.putExtra("org.musikcube.Service.action", "player_end");
this.service.startService(intent);
-*/
+
}
}
}

public void OnTrackStatusUpdate(TrackPlayer trackPlayer,int status) {
- if(status==TrackPlayer.STATUS_EXIT){
+/* if(status==TrackPlayer.STATUS_EXIT){
this.Next();
- }
-/* Intent intent = new Intent(this.service, org.musikcube.Service.class);
+ }*/
+ Intent intent = new Intent(this.service, org.musikcube.Service.class);
intent.putExtra("org.musikcube.Service.action", "next");
- this.service.startService(intent);*/
+ this.service.startService(intent);
}

public int GetCurrentTrackId(){

Reply all
Reply to author
Forward
0 new messages