Skip to content

Commit 8a989a4

Browse files
authored
Merge pull request Circle-Of-Music-Makers#26 from Circle-Of-Music-Makers/development
v10 : Igil
2 parents 4a68ba9 + a4af6f2 commit 8a989a4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1024
-643
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Circle of Music Android App
2-
___
2+
33
## About
4-
Circle of Music or CoM which we like to call it, is a music sharing application developed by Siddhant Gupta, Saumil Sachdeva, and Sameer Vaze.
4+
Circle of Music is a music playing/sharing application developed by Siddhant , Saumil Sachdeva, and Sameer Vaze.
55

66
## Screenshots
77
![Home](https://raw.githubusercontent.com/Circle-Of-Music-Makers/com-android/master/screenshots/home.png)
88
![Play of the Month](https://raw.githubusercontent.com/Circle-Of-Music-Makers/com-android/master/screenshots/potm.png)
9+
![CoM](https://raw.githubusercontent.com/Circle-Of-Music-Makers/com-android/master/screenshots/com.png)

app/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "com.sidzi.circleofmusic"
99
minSdkVersion 17
1010
targetSdkVersion 25
11-
versionCode 9
12-
versionName "Harpsichord"
11+
versionCode 10
12+
versionName "Igil"
1313
}
1414

1515
buildTypes {
@@ -24,6 +24,7 @@ android {
2424

2525
dependencies {
2626
compile 'com.android.volley:volley:1.0.0'
27+
compile 'net.gotev:uploadservice:3.1'
2728
compile 'com.j256.ormlite:ormlite-android:5.0'
2829
compile 'com.j256.ormlite:ormlite-core:5.0'
2930
compile 'com.rollbar:rollbar-android:0.2.0'

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@
99
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1010
<uses-permission android:name="android.permission.WAKE_LOCK" />
1111

12-
<uses-permission-sdk-23 android:name="android.permission.INTERNET" />
13-
<uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE" />
14-
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
15-
<uses-permission-sdk-23 android:name="android.permission.READ_EXTERNAL_STORAGE" />
16-
<uses-permission-sdk-23 android:name="android.permission.WAKE_LOCK" />
17-
1812
<application
1913
android:allowBackup="false"
2014
android:icon="@mipmap/ic_launcher"
@@ -40,12 +34,18 @@
4034

4135
<service android:name=".services.MusicPlayerService" />
4236

43-
<receiver android:name=".recievers.MediaButtonHandler">
44-
<intent-filter>
37+
<receiver android:name=".receivers.MediaButtonHandler">
38+
<intent-filter android:priority="999">
4539
<action android:name="android.intent.action.MEDIA_BUTTON" />
4640
</intent-filter>
4741
</receiver>
4842

43+
<receiver android:name=".receivers.AudioOutputChangeReceiver">
44+
<intent-filter>
45+
<action android:name="android.media.AUDIO_BECOMING_NOISY" />
46+
</intent-filter>
47+
</receiver>
48+
4949
<activity
5050
android:name=".ui.EosActivity"
5151
android:configChanges="orientation|keyboardHidden|screenSize"
@@ -58,7 +58,7 @@
5858
android:theme="@style/AppTheme.NoActionBar" />
5959
<activity android:name=".ui.AlarmSettingActivity" />
6060

61-
<receiver android:name=".recievers.AlarmReciever" />
61+
<receiver android:name=".receivers.AlarmReceiver" />
6262

6363
<activity
6464
android:name=".ui.AlarmActivity"
Lines changed: 74 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,117 @@
11
package com.sidzi.circleofmusic.adapters;
22

3+
import android.content.Context;
34
import android.support.v7.widget.RecyclerView;
45
import android.view.LayoutInflater;
56
import android.view.View;
67
import android.view.ViewGroup;
78
import android.widget.TextView;
89

10+
import com.android.volley.Request;
11+
import com.android.volley.RequestQueue;
12+
import com.android.volley.Response;
13+
import com.android.volley.VolleyError;
14+
import com.android.volley.toolbox.Volley;
915
import com.sidzi.circleofmusic.R;
16+
import com.sidzi.circleofmusic.config;
1017
import com.sidzi.circleofmusic.entities.ChatMessage;
18+
import com.sidzi.circleofmusic.helpers.BasicAuthJsonObjectRequest;
19+
20+
import org.json.JSONArray;
21+
import org.json.JSONException;
22+
import org.json.JSONObject;
1123

1224
import java.util.ArrayList;
1325
import java.util.List;
1426

1527
public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
1628

17-
private List<ChatMessage> chatEntries = new ArrayList<>();
29+
private List<ChatMessage> chatMessageList;
30+
private Context mContext;
1831

19-
public ChatAdapter() {
32+
public ChatAdapter(Context context) {
2033
super();
34+
mContext = context;
35+
chatMessageList = new ArrayList<>();
36+
populate();
37+
}
38+
39+
void populate() {
40+
RequestQueue rq = Volley.newRequestQueue(mContext);
41+
BasicAuthJsonObjectRequest request = new BasicAuthJsonObjectRequest(mContext, Request.Method.GET, config.com_url + "getMessages", null, new Response.Listener<JSONObject>() {
42+
@Override
43+
public void onResponse(JSONObject response) {
44+
addToArrayList(response);
45+
}
46+
}, new Response.ErrorListener() {
47+
@Override
48+
public void onErrorResponse(VolleyError error) {
49+
error.printStackTrace();
50+
}
51+
});
52+
rq.add(request);
2153
}
2254

23-
public void addMessage(String messageString, boolean chatMe) {
24-
if (!messageString.equals("")) {
25-
ChatMessage chatMessage = new ChatMessage(messageString, chatMe);
26-
chatEntries.add(chatMessage);
27-
notifyItemInserted(getItemCount());
55+
public void sendMessage(String message) {
56+
JSONObject params = new JSONObject();
57+
try {
58+
params.put("message_text", message);
59+
} catch (JSONException e) {
60+
e.printStackTrace();
2861
}
62+
RequestQueue rq = Volley.newRequestQueue(mContext);
63+
BasicAuthJsonObjectRequest request = new BasicAuthJsonObjectRequest(mContext, Request.Method.POST, config.com_url + "postMessage", params, new Response.Listener<JSONObject>() {
64+
@Override
65+
public void onResponse(JSONObject response) {
66+
addToArrayList(response);
67+
}
68+
}, new Response.ErrorListener() {
69+
@Override
70+
public void onErrorResponse(VolleyError error) {
71+
error.printStackTrace();
72+
}
73+
});
74+
rq.add(request);
2975
}
3076

77+
private void addToArrayList(JSONObject response) {
78+
try {
79+
JSONArray messages_list = response.getJSONArray("messages");
80+
chatMessageList.clear();
81+
for (int i = 0; i < messages_list.length(); i++) {
82+
chatMessageList.add(new ChatMessage(messages_list.getJSONObject(i).getString("username"), messages_list.getJSONObject(i).getString("message_text")));
83+
}
84+
} catch (JSONException e) {
85+
e.printStackTrace();
86+
}
87+
notifyDataSetChanged();
88+
}
3189

3290
@Override
3391
public ChatAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
34-
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_row_chat, parent, false);
92+
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_chat, parent, false);
3593
return new ViewHolder(view);
3694
}
3795

3896
@Override
3997
public void onBindViewHolder(ChatAdapter.ViewHolder holder, int position) {
40-
if (chatEntries.get(holder.getAdapterPosition()).isSelf_flag()) {
41-
holder.tvChatMessageLocal.setVisibility(View.VISIBLE);
42-
holder.tvChatMessageLocal.setText(chatEntries.get(holder.getAdapterPosition()).getBody());
43-
holder.tvChatMessageRemote.setVisibility(View.GONE);
44-
45-
} else {
46-
holder.tvChatMessageRemote.setVisibility(View.VISIBLE);
47-
holder.tvChatMessageRemote.setText(chatEntries.get(holder.getAdapterPosition()).getBody());
48-
holder.tvChatMessageLocal.setVisibility(View.GONE);
49-
}
98+
holder.tvChatMessageSender.setText(chatMessageList.get(position).getSender());
99+
holder.tvChatMessageBody.setText(chatMessageList.get(position).getBody());
50100
}
51101

52102
@Override
53103
public int getItemCount() {
54-
return chatEntries.size();
104+
return chatMessageList.size();
55105
}
56106

57-
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
58-
TextView tvChatMessageLocal;
59-
TextView tvChatMessageRemote;
107+
class ViewHolder extends RecyclerView.ViewHolder {
108+
private TextView tvChatMessageSender;
109+
private TextView tvChatMessageBody;
60110

61111
ViewHolder(View view) {
62112
super(view);
63-
this.tvChatMessageLocal = (TextView) view.findViewById(R.id.tvChatMessageLocal);
64-
this.tvChatMessageRemote = (TextView) view.findViewById(R.id.tvChatMessageRemote);
65-
view.setOnClickListener(this);
66-
}
67-
68-
@Override
69-
public void onClick(View v) {
70-
113+
this.tvChatMessageSender = (TextView) view.findViewById(R.id.tvChatMessageSender);
114+
this.tvChatMessageBody = (TextView) view.findViewById(R.id.tvChatMessageBody);
71115
}
72116
}
73117
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package com.sidzi.circleofmusic.adapters;
2+
3+
import android.content.ComponentName;
4+
import android.content.Context;
5+
import android.content.Intent;
6+
import android.content.ServiceConnection;
7+
import android.os.IBinder;
8+
import android.support.v7.widget.RecyclerView;
9+
import android.view.LayoutInflater;
10+
import android.view.View;
11+
import android.view.ViewGroup;
12+
import android.widget.TextView;
13+
14+
import com.android.volley.Request;
15+
import com.android.volley.RequestQueue;
16+
import com.android.volley.Response;
17+
import com.android.volley.VolleyError;
18+
import com.android.volley.toolbox.JsonArrayRequest;
19+
import com.android.volley.toolbox.Volley;
20+
import com.sidzi.circleofmusic.R;
21+
import com.sidzi.circleofmusic.entities.ComTrack;
22+
import com.sidzi.circleofmusic.services.MusicPlayerService;
23+
24+
import org.json.JSONArray;
25+
import org.json.JSONException;
26+
27+
import java.util.ArrayList;
28+
import java.util.List;
29+
30+
import static com.sidzi.circleofmusic.config.com_url;
31+
32+
public class ComTracksAdapter extends RecyclerView.Adapter<ComTracksAdapter.ViewHolder> {
33+
34+
private List<ComTrack> mTrackList;
35+
private Context mContext;
36+
37+
public ComTracksAdapter(Context mContext) {
38+
super();
39+
this.mContext = mContext;
40+
mTrackList = new ArrayList<>();
41+
RequestQueue requestQueue = Volley.newRequestQueue(mContext);
42+
JsonArrayRequest trackRequest = new JsonArrayRequest(Request.Method.GET, com_url + "getTracks", null, new Response.Listener<JSONArray>() {
43+
@Override
44+
public void onResponse(JSONArray response) {
45+
try {
46+
for (int i = 0; i < response.length(); i++) {
47+
mTrackList.add(new ComTrack(response.getJSONObject(i)));
48+
}
49+
notifyDataSetChanged();
50+
} catch (JSONException e) {
51+
e.printStackTrace();
52+
}
53+
}
54+
}, new Response.ErrorListener() {
55+
@Override
56+
public void onErrorResponse(VolleyError error) {
57+
// Couldn't fetch data
58+
}
59+
});
60+
requestQueue.add(trackRequest);
61+
}
62+
63+
64+
@Override
65+
public ComTracksAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
66+
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_com_track, parent, false);
67+
return new ViewHolder(view);
68+
}
69+
70+
@Override
71+
public void onBindViewHolder(final ViewHolder holder, final int position) {
72+
holder.tvComTrackName.setText(mTrackList.get(position).getTitle());
73+
holder.tvComTrackInfo.setText(mTrackList.get(position).getArtist());
74+
holder.tvComTrackUploader.setText(mTrackList.get(position).getUsername());
75+
String temp_path = mTrackList.get(position).getPath();
76+
77+
holder.itemView.setTag(R.id.tag_track_path, temp_path);
78+
holder.itemView.setTag(R.id.tag_track_name, mTrackList.get(position).getTitle());
79+
holder.itemView.setTag(R.id.tag_track_artist, mTrackList.get(position).getArtist());
80+
}
81+
82+
@Override
83+
public int getItemCount() {
84+
return mTrackList.size();
85+
}
86+
87+
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
88+
private TextView tvComTrackName;
89+
private TextView tvComTrackInfo;
90+
private TextView tvComTrackUploader;
91+
92+
ViewHolder(View view) {
93+
super(view);
94+
this.tvComTrackName = (TextView) view.findViewById(R.id.tvComTrackName);
95+
this.tvComTrackInfo = (TextView) view.findViewById(R.id.tvComTrackInfo);
96+
this.tvComTrackUploader = (TextView) view.findViewById(R.id.tvComTrackUploader);
97+
view.setOnClickListener(this);
98+
view.setOnLongClickListener(this);
99+
}
100+
101+
@Override
102+
public void onClick(final View v) {
103+
Intent intent = new Intent(mContext, MusicPlayerService.class);
104+
ServiceConnection mMusicServiceConnection = new ServiceConnection() {
105+
@Override
106+
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
107+
MusicPlayerService.MusicBinder musicBinder = (MusicPlayerService.MusicBinder) iBinder;
108+
musicBinder.getService().play(v.getTag(R.id.tag_track_path).toString(), v.getTag(R.id.tag_track_artist).toString(), v.getTag(R.id.tag_track_name).toString());
109+
mContext.unbindService(this);
110+
}
111+
112+
@Override
113+
public void onServiceDisconnected(ComponentName componentName) {
114+
115+
}
116+
};
117+
mContext.bindService(intent, mMusicServiceConnection, Context.BIND_AUTO_CREATE);
118+
}
119+
120+
@Override
121+
public boolean onLongClick(View v) {
122+
// Show who uploaded it
123+
return true;
124+
}
125+
}
126+
}

0 commit comments

Comments
 (0)