CiviCRM Community Forums (archive)

*

News:

Have a question about CiviCRM?
Get it answered quickly at the new
CiviCRM Stack Exchange Q+A site

This forum was archived on 25 November 2017. Learn more.
How to get involved.
What to do if you think you've found a bug.



  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Developer Discussion »
  • Google Summer of Code »
  • [GSoC 2015] [STABLE RELEASE] Cividroid - A CiviCRM companion on Android!
Pages: [1] 2

Author Topic: [GSoC 2015] [STABLE RELEASE] Cividroid - A CiviCRM companion on Android!  (Read 5213 times)

IJagan

  • I’m new here
  • *
  • Posts: 14
  • Karma: 0
  • CiviCRM version: na
  • CMS version: na
  • MySQL version: na
  • PHP version: na
[GSoC 2015] [STABLE RELEASE] Cividroid - A CiviCRM companion on Android!
March 15, 2015, 11:56:28 pm
Update 4: Here is the .apk file (signed) - https://drive.google.com/file/d/0B6ni8LpT1G7WbkQ4NXNSVS05NTg/view?usp=sharing

GitHub Repo - https://github.com/Jagatheesan/CiviDroid---Alpha


Update 3: I need volunteers to test the current state of the App.

Link to the .apk - https://drive.google.com/file/d/0B6ni8LpT1G7WYTVidExZQXlkQlk/view?usp=sharing

What works in this version?
  • Contacts are synced and selected fields of the contacts are downloaded to local storage for offline access.
  • The Main Screen of the App lists all the phone contacts which are also a CiviCRM contact.
  • If you open any CiviCRM contact in your phone's default contacts App, you will have an option to open the contact in Cividroid.
  • The details screen of a contact, lists all the field details (selected at first-run.)
  • If you have a phone conversation with any CiviCRM contact, as soon as the call ends a small screen will pop up to take notes. (Only the Cancel and Save button is implemented in this version.)
  • As soon as the "Save" button is hit for the notes, it can be viewed in that particular's contact's detail screen.


Notes:
  • The login screen requires site key, api key and a config url
  • By default "display_name", "email", "phone" is selected. So, after entering the details you can hit next next and wait for contacts to show up on your screen.
  • On first run, it may take a couple of seconds for the sync (matching all contacts) to complete and finally show something.
  • For the Sync to work, either the phone numbers should match exactly (if there is country code in one and absent in another, it won't work - it could be handled in code - but very unreliable.) OR the email addresses should match.
  • If you couldn't get the Sync working, please manually add a contact that has either the phone/email match perfectly for the purpose of providing feedback.
  • There might be some contact duplication which is already fixed in the latest build on my PC, the purpose of this version to check if the sync works in live environment and to get crucial feedback from you.

Please, refer to this small documentation (with screenshots) to know things better -https://drive.google.com/open?id=0B6ni8LpT1G7WfjM4d2dLVFMyUTNPNzJ5eTM0RTRQaDZDelpXblNJSlRiX29LODdHNmFUTzA

_______________________________________________________________________________________________________________________

Update 2: Here is a couple of screenshots of the current status of the App (11 screenshots to be precise :) ) - https://drive.google.com/open?id=0B6ni8LpT1G7WfjM4d2dLVFMyUTNPNzJ5eTM0RTRQaDZDelpXblNJSlRiX29LODdHNmFUTzA

I am also attaching some images directly to this thread, but be sure to check out the above link for all the screenshots.

Here is how the App is set-up as of now.

1. You login to the App using your Site Key and API Key.
2. Once authenticated, you will have options to choose the details for Contacts and Activities which you want to download to your phone and have access to when offline.
3. Once the details has been selected, Cividroid will perform operations in the background which will match the contacts on your phone with that you have on the web based on two match criteria - phone number and email. If any of the match criteria holds true, the particular contact in your phone will now have an additional option added to the contacts screen - "Open Contact in Cividroid".
4. When you click the option "Open Contact in Cividroid", the App as of now features two tabs.

    a) The first tab, "About" lists out all the details about the particular contact which you have saved in CiviCRM web.
    b) The second tab, "Notes" lists out all the notes you have made after a phone call with the contact.
5. Whenever you finish a incoming/outgoing call with a phone contact that is also a CiviCRM contact, a small pop-up screen will appear at the bottom of the screen asking you if you want to enter any notes about the call that you will have just had.
6. The main screen of Cividroid features two tabs again.
     
    a) The first tab, "Contacts" lists out all your phone contacts who also happen to be a CiviCRM contact.
    b) The second tab, "Activities" lists out all the *scheduled* activities. These activities will have alarm set-up in your device automatically.
7. The App will have option to create a new Activity with reminder and also push the same to your CiviCRM web.

____________________________________________________________________________________________________________


Update 1: If any CiviCRM user would like to help answering few questions I have regarding the platform, please go through this document and respond in this thread. Thanks!

https://docs.google.com/document/d/1C31eh17urx7C6tSWheZ4OWsDxY4BHVVT3J1Xs_B77nQ/edit?usp=sharing


Hello all! I would like to execute the proposed project idea - Civi smartphone for this year's Google Summer of Code.

While I was composing a paragraph to propose my idea, I came across the following two paragraphs which almost replicates my idea, mentioned in the Introduction page of CiviCRM.

Quote
One way to understand what a CRM does is to think of your personal address book with enhanced capabilities. Imagine that every time you make a phone call to a given person, your address book automatically makes a note of it, together with brief description of the conversation. It can also decide whether to ask this person for a particular favor, based on whether she did this favor for you a week ago, and schedule a follow-up meeting following the call. After using this address book for a while, you could ask "What were my interactions with Ji Lao?" or "How many people helped me this month?" and it would give you the whole history.

Now let's say you're organizing a dinner party and you want to invite all the people you've met during the previous year. Just write the invitation and tell your address book to send the email. You don't have to worry about anything else after this point (apart from preparing the dinner!). Your address book handles the RSVPs from all invited guests, together with information about who is vegetarian and who is not. It even lets you know two nights before the event how many people you can expect.

My project proposal would be to convert the above concept into a reality (as an Android App.) What else could be more epic than bringing alive the analogy used to explain the current web-based CiviCRM?  ;D

Nicolos Ganivet indicated that there is a Google Apps Sync Extension which neatly syncs CiviCRM contacts and make it available on mobile phones as well. As Being an experienced Android Developer, I would like to mention the following possibilities of integrating the said extension with a standalone Android App:

  • Keep a record of all the SMS conversations between the user and its CiviCRM contacts.
  • Keep a record of phone calls exchanged between the user and its CiviCRM contacts.
  • At the end of each phone conversation with a CiviCRM contact, a screen may be allowed to pop up and letting the user to add additional notes/comments on the conversation.
  • Additional information about each CiviCRM contact could be added in Google Contacts, for example:- whether a user is vegetarian or not (for your dinner party ;) ) and the same could be made available in the CiviCRM's Android App.
  • Opening the App will let users find all kind of informations about their interaction with their CiviCRM contacts. Like, with whom the user had most number of SMS conversations, phone calls, which CiviCRM contact called the user often, find out contacts with positive notes (the one you add after end of each phone call.) And more.
  • A interface which showcases profile of a particular CiviCRM contact, the photos of last interaction with them etc.

Apart from having the ability to train others on Android App development, I have an Android App released on Google Play Market called - Energy Bar which has got over 85,500+ downloads (Note:- Google Play doesn't display downloads between 50,000 and 100,000 downloads, but the exact number is available in my Developer Console.) I think the App showcases my ability to not only design, code, execute but market the App. I have got few other Android Apps on the verge of completion. I am also a Recognized Developer at XDA-Developers.

Although the goal would be developing an Android App, I am happy to tell you that I have got good experience with Wordpress as well which will definitely help me. I recently learnt to create a Wordpress theme, plugin from scratch and also implemented a Leave Application Management System based on Wordpress with custom plugins/themes for my University (which also involved creating custom DB in Wordpress.) I will soon have the Source uploaded to GitHub.

Please let me know your thoughts on the said idea and help me create a successful project proposal for GSoC 2015 to execute the said idea.  :)
« Last Edit: October 18, 2015, 10:18:31 pm by IJagan »

nicolas

  • I post occasionally
  • **
  • Posts: 92
  • Karma: 6
    • cividesk
  • CiviCRM version: 4.4 LTS
  • CMS version: Standalone (yep)
  • MySQL version: 5.1
  • PHP version: 5.3
Re: GSoC 2015 - Civi smartphone: Android Powered
March 16, 2015, 01:07:42 pm
This seems like a good idea: you can directly interact with the CRM through the APIs, and using these APIs it would be relatively easy to search for a contact based on a phone number (provided these are normalized in the CRM, see github.com/cividesk/com.cividesk.normalize or other similar extensions), and then add the phone call as an activity for this contact in the CRM (there already is a 'Phone Call' activity type by default).

When adding the activity, you can automatically include information such as Added by (person the phone belongs to), date and time, duration of the call, etc. If you then pop-up a screen at the end of the phone call, you can ask the phone owner for add additional information such as title, comments and an eventual follow-up activity (call the person back in 1 week).

One thing that would also be great is to display the scheduled activities that are in the CRM on the phone. These activities include phone calls to be made, scheduled meetings, etc. We can either do that by querying the CRM directly, or by synch'ing these to Google Apps and then letting Google sync on the phone. I would personally prefer the first option as we have less dependencies, but do not know the implications in terms of integration with the Android platform (ie. is there a Tasks application?). Obviously, the more integrated we are with standard platform applications the better, but then if a screen reminder pops-up to call a person, it would be nice if you can click somewhere to get the phone number from the CRM and initiate the call.

My thinking is that whatever we do, we must minimize the amount of information stored on the device (which has a limited storage capacity), and favor real-time API calls instead to always get the latest information and not have to deal with complex synchronization issues. The API calls are usually fast and do return compact XML structures, so this should not significantly impact performance.

Finally, can development be made with a cross-platform toolkit, such as PhoneGap, Sencha Touch or Qt, so that it is then easily ported to the iOS platform?
cividesk -- CiviCRM delivered ... your way!

IJagan

  • I’m new here
  • *
  • Posts: 14
  • Karma: 0
  • CiviCRM version: na
  • CMS version: na
  • MySQL version: na
  • PHP version: na
Re: GSoC 2015 - Civi smartphone: Android Powered
March 16, 2015, 06:37:14 pm
Quote from: nicolas on March 16, 2015, 01:07:42 pm
This seems like a good idea: you can directly interact with the CRM through the APIs, and using these APIs it would be relatively easy to search for a contact based on a phone number (provided these are normalized in the CRM, see github.com/cividesk/com.cividesk.normalize or other similar extensions), and then add the phone call as an activity for this contact in the CRM (there already is a 'Phone Call' activity type by default).

When adding the activity, you can automatically include information such as Added by (person the phone belongs to), date and time, duration of the call, etc. If you then pop-up a screen at the end of the phone call, you can ask the phone owner for add additional information such as title, comments and an eventual follow-up activity (call the person back in 1 week).

One thing that would also be great is to display the scheduled activities that are in the CRM on the phone. These activities include phone calls to be made, scheduled meetings, etc. We can either do that by querying the CRM directly, or by synch'ing these to Google Apps and then letting Google sync on the phone. I would personally prefer the first option as we have less dependencies, but do not know the implications in terms of integration with the Android platform (ie. is there a Tasks application?). Obviously, the more integrated we are with standard platform applications the better, but then if a screen reminder pops-up to call a person, it would be nice if you can click somewhere to get the phone number from the CRM and initiate the call.

My thinking is that whatever we do, we must minimize the amount of information stored on the device (which has a limited storage capacity), and favor real-time API calls instead to always get the latest information and not have to deal with complex synchronization issues. The API calls are usually fast and do return compact XML structures, so this should not significantly impact performance.

Finally, can development be made with a cross-platform toolkit, such as PhoneGap, Sencha Touch or Qt, so that it is then easily ported to the iOS platform?

Glad that you liked the idea, Nicolas.

I can definitely see why you would want everything to be on the cloud and tightly integrated directly with the standard platform. I work with the Android API on a day-to-day basis, and play around with the above mentioned features in many of my projects.

Fortunately, all the things we spun into the idea is possible on Android platform, which includes:

  • At the end of each call, as we discussed a Phone Call Activity could be added with optional notes/messages from the user, which will be synced to the CiviCRM on the web.
  • If a phone call Activity is added to CiviCRM with the wish to call-back at a particular time, irrespective of the platform through which it was added, it will be synced to the Android device to automatically pop up with a number on the specified date & time. And the sync will include only setting up the schedule, no actual significant storage.

On an Android device, I will develop the App in such a way that there is always this sense of the 'Assistant' (CiviCRM's Android App) existence which automates and reminds things.

Finally, to address your question on cross-platform toolkit. I am not sure, if we will be able to achieve the same level of interaction in iOS platform that we could do in Android (example: Poping up at the end of each call, poping up a non-disrutive screen for the call-back activity.) There might be a variation in the UX. I suggest, that the development is first done in native Android platform (with well documentation, of course) and when we reach a satisfying level of prototype we will consider the possibility of doing the same in these other toolkits. Let me know your thoughts.

I would also like other mentor's views on the idea, and any specific query, if any to me before I submit my GSoC project proposal.
Also, is there any specific format in which you and other mentors wish to receive the project proposal?
« Last Edit: March 17, 2015, 03:43:02 am by IJagan »

nicolas

  • I post occasionally
  • **
  • Posts: 92
  • Karma: 6
    • cividesk
  • CiviCRM version: 4.4 LTS
  • CMS version: Standalone (yep)
  • MySQL version: 5.1
  • PHP version: 5.3
Re: GSoC 2015 - Civi smartphone: Android Powered
March 17, 2015, 06:38:41 pm
Quote from: IJagan on March 16, 2015, 06:37:14 pm
Finally, to address your question on cross-platform toolkit. I am not sure, if we will be able to achieve the same level of interaction in iOS platform that we could do in Android (example: Poping up at the end of each call, poping up a non-disrutive screen for the call-back activity.) There might be a variation in the UX. I suggest, that the development is first done in native Android platform (with well documentation, of course) and when we reach a satisfying level of prototype we will consider the possibility of doing the same in these other toolkits. Let me know your thoughts.

I personally would be ready to sacrifice a few features in order to get a cross-platform application. With PhoneGap, it looks like you can place a phone call (http://plugins.cordova.io/#/package/mobi.roshka.cordova.callphone) and access the call log at least on the Android platform (https://github.com/dalyc/Cordova-CallLog-Plugin). I do not know the capabilities of other cross-platform toolkits but think it is worth investigating.
cividesk -- CiviCRM delivered ... your way!

xavier

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4453
  • Karma: 161
    • Tech To The People
  • CiviCRM version: yes probably
  • CMS version: drupal
Re: GSoC 2015 - Civi smartphone: Android Powered
March 18, 2015, 01:43:27 am
I agree with Nicolas in principle, but don't know enough about android sdk vs. phonegap to know how much we'd loose or how more complicated it would be.

@Ijagan, would be great if you could share with us and investigate a bit more.
-Hackathon and data journalism about the European parliament 24-26 jan. Watch out the result

JoeMurray

  • Administrator
  • Ask me questions
  • *****
  • Posts: 578
  • Karma: 24
    • JMA Consulting
  • CiviCRM version: 4.4 and 4.5 (as of Nov 2014)
  • CMS version: Drupal, WordPress, Joomla
  • MySQL version: MySQL 5.5, 5.6, MariaDB 10.0 (as of Nov 2014)
Re: GSoC 2015 - Civi smartphone: Android Powered
March 23, 2015, 12:25:20 pm
Quote
Keep a record of all the SMS conversations between the user and its CiviCRM contacts.
Keep a record of phone calls exchanged between the user and its CiviCRM contacts.
At the end of each phone conversation with a CiviCRM contact, a screen may be allowed to pop up and letting the user to add additional notes/comments on the conversation.

I think it would be useful for these three functions to store the information back into CiviCRM using its existing schema and api for that.

I like the idea of cross-platform development too like Nicolas, but am also concerned about loss of functionality / performance when moving to lowest common denominator. Reviewing the first 6 - 10 link of https://www.google.ca/search?q=android+ios+cross+platform&oq=android+ios+cro&aqs=chrome.0.0j69i57j0l4.6271j0j7&sourceid=chrome&es_sm=91&ie=UTF-8#q=android+ios+cross+platform+development+review leaves me unconvinced there is a clear answer. I'd tend to defer to IJagan on this.
Co-author of Using CiviCRM https://www.packtpub.com/using-civicrm/book

xavier

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4453
  • Karma: 161
    • Tech To The People
  • CiviCRM version: yes probably
  • CMS version: drupal
Re: GSoC 2015 - Civi smartphone: Android Powered
March 26, 2015, 01:41:00 am
Quick reminder, not sure if the student(s) interested have done it already for this project, but you have to register and submit the proposal before tomorrow

http://forum.civicrm.org/index.php/topic,36143.0.html

If it's done already, all good, we'll discuss internally and with you and let you learn better our development workflow and tools we use and give you a chance to mingle with the community
-Hackathon and data journalism about the European parliament 24-26 jan. Watch out the result

IJagan

  • I’m new here
  • *
  • Posts: 14
  • Karma: 0
  • CiviCRM version: na
  • CMS version: na
  • MySQL version: na
  • PHP version: na
Re: GSoC 2015 - Civi smartphone: Android Powered
March 26, 2015, 09:44:38 pm
Hi Mentors!

I am still in a huge confusion. I have spent a fair amount of time researching on the Cordova/PhoneGap plugins to support the functionality I propose to build. It turns out that, many things are fragmented/scattered in the respective cross-platform community. There are plugins which support one feature on one platform but not the other, then there is out-dated plugins and so on.

As an experienced Android Developer, I understand the temptation to go for cross-platform solution but I urge that we settle down for Android Platform instead of a half-backed cross-platform product. If it's absolutely necessary that we go with cross-platform, I must inform that, we might very well be spending significant amount of the Summer in finding the right plugins/finding a balance of feature and so on and ultimately not able to finish a satisfactory product.

Moreover, I should also highlight the fact that, the features we discussed to build make use of some core Android system functions, my vision for the App is to build a more integrated experience. For this reason alone, cross-platform solution isn't mature enough to support our project (atleast not without scrapping a significant part of the vision for the App.)

Having said that, if the mentors are interested, I have already done feasibility testing of majority of the feature we plan to build, infact I work with some of the Android APIs on a day-to-day basis for my personal projects. So, I can assure that, we will have a beautiful working Android App at the end of this Summer. I have a draft proposal ready which specifically targets Android platform, I need mentors' view on this issue as soon as possible to go forward and submit the proposal as I have only 10+ hours to submit the proposal.

Thanks!


nicolas

  • I post occasionally
  • **
  • Posts: 92
  • Karma: 6
    • cividesk
  • CiviCRM version: 4.4 LTS
  • CMS version: Standalone (yep)
  • MySQL version: 5.1
  • PHP version: 5.3
Re: GSoC 2015 - Civi smartphone: Android Powered
March 26, 2015, 10:07:08 pm
IJagan - Please go ahead and submit your proposal as is, targeting the Android platform.

If it is accepted we will anyways have to refine the goals and technical path at the start of the project, and we can then take the a few days to evaluate cross-platform feasibility, and then quickly move to starting the project one way or another.
cividesk -- CiviCRM delivered ... your way!

xavier

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4453
  • Karma: 161
    • Tech To The People
  • CiviCRM version: yes probably
  • CMS version: drupal
Re: GSoC 2015 - Civi smartphone: Android Powered
April 20, 2015, 01:24:15 am
Hi,

To complete your analysis of the cross-devices plateforms, could you have a look at the react native one and tell us what you think about it?

X+

P.S. It's mentioned somewhere it supports android, but I can't see it, only iOS ;)
-Hackathon and data journalism about the European parliament 24-26 jan. Watch out the result

IJagan

  • I’m new here
  • *
  • Posts: 14
  • Karma: 0
  • CiviCRM version: na
  • CMS version: na
  • MySQL version: na
  • PHP version: na
Re: GSoC 2015 - Civi smartphone: Android Powered
April 24, 2015, 12:49:58 am
Hi Xavier, React Native only supports iOS as of now, and apparently the Android Support will take 5+ more months to come out.

Source - http://facebook.github.io/react/blog/#when-is-react-native-android-coming


raustin1

  • I post occasionally
  • **
  • Posts: 39
  • Karma: 0
    • University of Notre Dame
  • CiviCRM version: 4.6.11
  • CMS version: Joomla 3.4.8
  • MySQL version: 5.5.45-cll-lve
  • PHP version: 5.6.16
Re: GSoC 2015 - Civi smartphone: Android Powered
May 07, 2015, 12:58:58 pm
Hello - excited to hear about this project!

My colleagues and I have developed a mobile app for CiviCRM that we would love to share with this project. It's not a native app, but is rather web-based. In any case, it works well and has a ton of functionality. We'd love for you to extend, merge, take over this project as the basis for your project.

I'm on the run at the moment, but my colleagues will share more info in this column in the next day or so.

Thanks!

IJagan

  • I’m new here
  • *
  • Posts: 14
  • Karma: 0
  • CiviCRM version: na
  • CMS version: na
  • MySQL version: na
  • PHP version: na
Re: GSoC 2015 - Civi smartphone: Android Powered
May 10, 2015, 11:01:50 pm
Quote from: raustin1 on May 07, 2015, 12:58:58 pm
Hello - excited to hear about this project!

My colleagues and I have developed a mobile app for CiviCRM that we would love to share with this project. It's not a native app, but is rather web-based. In any case, it works well and has a ton of functionality. We'd love for you to extend, merge, take over this project as the basis for your project.

I'm on the run at the moment, but my colleagues will share more info in this column in the next day or so.

Thanks!

Hey Raustin!

Thanks for your interest. I really look forward to see what you guys have done :D
I will definitely look into it and see if I could make use of anything from your project and keep you posted.

bstalcup

  • I post occasionally
  • **
  • Posts: 47
  • Karma: 1
  • CiviCRM version: 4.7.3
  • CMS version: Joomla!
  • MySQL version: 5.5.36-cll-lve
  • PHP version: 5.3.29
Re: GSoC 2015 - Civi smartphone: Android Powered
May 13, 2015, 06:59:53 am
Hey,

I am one of raustin's said colleagues.  I've done a good bit of tweaking and development on the webapp.  There's a pretty handy and responsive ajax search functionality.  I've modified it to work with our custom civi data, so as it exists now, it would need to be modified a great deal. 

You can find the source code in the github repo: https://github.com/ACEatND/CiviCRMClient


Thanks,
bstalcup

raustin1

  • I post occasionally
  • **
  • Posts: 39
  • Karma: 0
    • University of Notre Dame
  • CiviCRM version: 4.6.11
  • CMS version: Joomla 3.4.8
  • MySQL version: 5.5.45-cll-lve
  • PHP version: 5.6.16
Re: GSoC 2015 - Civi smartphone: Android Powered
May 13, 2015, 07:07:12 am
Thanks bstalcup!

We also have a publicly available version to test here: http://civicrmmobile.cloudaccess.net/

Give us day or so to update it. The latest version is on our live site and we're updating at that demo link so you can see it in action.

Pages: [1] 2
  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Developer Discussion »
  • Google Summer of Code »
  • [GSoC 2015] [STABLE RELEASE] Cividroid - A CiviCRM companion on Android!

This forum was archived on 2017-11-26.