<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Am I the only one whose email reader (Outlook 2010) does not distinguish well between who is saying what in this email message?  Not just this one—others too—but often they are Joe’s.  Anyone else using Outlook and had this problem and then tweaked some setting somewhere and the problem went away?  Please advise.  Thank-you.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Cheers,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>DBM<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> erlang-questions-bounces@erlang.org [mailto:erlang-questions-bounces@erlang.org] <b>On Behalf Of </b>Joe Armstrong<br><b>Sent:</b> Tuesday, January 15, 2013 03:41<br><b>To:</b> erlang@ernovation.com<br><b>Cc:</b> Erlang-questions<br><b>Subject:</b> Re: [erlang-questions] Erlang4Android<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>On Mon, Jan 14, 2013 at 9:04 PM, Erik Reitsma <<a href="mailto:erlang@ernovation.com" target="_blank">erlang@ernovation.com</a>> wrote:<o:p></o:p></p><div><p class=MsoNormal>On 01/14/2013 11:37 AM, Joe Armstrong wrote:<o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>This is amazing - works like a charm - fantastic.<o:p></o:p></p></div><p class=MsoNormal>I am glad it not only works on my own devices. :-)<o:p></o:p></p><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>Quick comment -<br><br>    It would be very nice to make the client and server in fac_example.zip run "out of the box"<br>client.erl is a *must read* file. server.erl does not export main/0 and should be changed to<br>spawn the server - otherwise you don't get control in the shell ...<o:p></o:p></p></blockquote></div><p class=MsoNormal>The server was intended to be run on some server, not on the Android device. Only the client should run on the device. Of course, the server could easily be adapted to run on the same device, or another device, as well.<br>The example was mainly intended for people familiar with Erlang, who want to try their Erlang skills on Android. A different example may be required for Android programmers who do not yet know Erlang.<o:p></o:p></p><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><p class=MsoNormal>First thoughts/questions:<br><br>  - The download is rather large - I'm sure this could be made a *lot smaller<o:p></o:p></p></blockquote><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>Definitely. As I wrote, I put in as much as I could, mainly to show that all those libraries could run on the device. I intend to make a minimal installation too. The current download includes almost everything from OTP, including things like epmd (which also works, but you will need to start Erlang from a shell, probably with root permissions). I think I can probably remove the corba applications, the megaco application, ASN.1 and many others. I will see if I can make it possible to make your own selection of OTP applications, and perhaps even allow other repositories with non-OTP-applications.<o:p></o:p></p><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><p class=MsoNormal>  - Need Erlang APIs to the camera, GPS, .... etc.<o:p></o:p></p></blockquote><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>For now the easiest way to do this is write wrappers around the SL4A APIs. Have you looked at those and found them lacking? You can find all available functions here: <a href="http://code.google.com/p/android-scripting/wiki/ApiReference" target="_blank">http://code.google.com/p/android-scripting/wiki/ApiReference</a> I have actually only tried a view of them myself.<br>All functionality from SL4A is available through the module android. I have implemented this using a dirty trick: I have modified error_handler.erl such that for an undefined function android:F(Args), the function android:rpc([Args]) will be called. So I only implemented android:rpc/1, which will be called for any other function android:F/N. Dirty, but if there is a new function in SL4A, it will be supported automagically. This is similar to the implementation for Python4Android.<o:p></o:p></p><div><p class=MsoNormal><br>Golly - I read the code - you modified error_handler.erl !!!! <br><br>So what happens is ...<br><br>   I call android:fooBar(Args) - fooBar is not defined in android.erl<br>   so it's caught in error_handler and then android:rpc(fooBar, [...]) is called<br>   and this ends up as a Json call to a socket -<br><br>   (aside) I'm not sure I'm totally happy with modifying the error_handler for this,<br>   what's wrong with calling android:rpc(Func, Args) in your code and not<br>   changing the error handler?<br>   (/aside) <br><br><br>   It appears that SL4A is interfaced via a socket carrying JSON encode terms - is that correct?<br><br>   I Googled a bit to see if I could find where the protocol is defined - but found nothing.<br>   Where, for example, is the handshake that you perform in android:init *specified*<br> <br>   If I want to call an andoid function I need to create a JSON argument list from erlang -<br>what are the calling conventions? <br><br>   This is all very interesting stuff - I'd really like some documentation though, how the<br>heck did you figure out how the interface works? - did you have to sniff the socket? - is there an architectural description somewhere?<br><br>Cheers<br><br>/Joe<br><br><br><br><br><br> <o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>  - The client.erl example shows I can make an application *without* eclipse<br>     it would be very nice top abstract the details of the layout() function<br>     so as not to see the XML :-)<o:p></o:p></p></blockquote></div><p class=MsoNormal>Yes. :-) SL4A does not provide an API to dynamically create gui elements, so this is a limitation with the current approach. It would be possible to write Erlang code that transforms something erlangy into the required XML. I would have to look at how generic that could be made, because I may be too lazy to specifically implement all possibilities for the layout XML. I think it would be possible to make some simple XML-generation from lists of tuples records. I will give it some thought.<br><br>Regards,<br>*Erik.<o:p></o:p></p></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>