<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua - category - speech</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/category/speech/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/category/speech" />
  <id>https://sachachua.com/blog/category/speech/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-03-24T01:19:29Z</updated>
<entry>
		<title type="html">Categorizing Emacs News items by voice in Org Mode</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-03-24T01:19:29Z</updated>
    <published>2026-03-24T01:19:29Z</published>
    <category term="speech" />
<category term="speech-recognition" />
<category term="emacs" />
<category term="org" />
		<id>https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/</id>
		<content type="html"><![CDATA[<p>
I'm having fun exploring which things might actually be easier to do by voice than by typing. For example, after I wrote some code to <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-expanding-yasnippet-by-voice">expand yasnippets by voice</a>, I realized that it was easier to:
</p>

<ol class="org-ol">
<li>press my shortcut,</li>
<li>say "okay, define interactive function",</li>
<li>and then press my shortcut again,</li>
</ol>

<p>
than to:
</p>

<ol class="org-ol">
<li>mentally say it,</li>
<li>get the first initials,</li>
<li>type in "dfi",</li>
<li>and press Tab to expand.</li>
</ol>

<p>
Another area where I do this kind of mental translation for keyboard shortcuts is when I categorize dozens of Emacs-related links each week for <a href="https://sachachua.com/blog/category/emacs-news">Emacs News</a>. I used to do this by hand. Then I wrote a function to try to guess the category based on regular expressions (<code>my-emacs-news-guess-category</code> in <a href="https://raw.githubusercontent.com/sachac/emacs-news/refs/heads/master/index.org">emacs-news/index.org</a>, which is large). Then I set up a menu that lets me <a href="https://sachachua.com/blog/2019/06/making-a-numpad-based-hydra-for-categorizing-org-list-items/">press numbers corresponding to the most frequent categories</a> and use tab completion for the rest. 1 is Emacs Lisp, 2 is Emacs development, 3 is Emacs configuration, 4 is appearance, 5 is navigation, and so on. It's not very efficient, but some of it has at least gotten into muscle memory, which is also part of why it's hard to change the mapping. I don't come across that many links for Emacs development or Spacemacs, and I could probably change them to something else, but&hellip; Anyway.
</p>


<figure id="org36cd391">
<a href="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/2026-03-23_20-38-33.png"><img src="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/2026-03-23_20-38-33.png" alt="2026-03-23_20-38-33.png"></a>

<figcaption><span class="figure-number">Figure 1: </span>Screenshot of my menu for categorizing links</figcaption>
</figure>

<p>
I wanted to see if I could categorize links by voice instead. I might not always be able to count on being able to type a lot, and it's always fun to experiment with other modes of input. Here's a demonstration showing how Emacs can automatically open the URLs, wait for voice input, and categorize the links using a reasonably close match. The <code>*Messages*</code> buffer displays the recognized output to help with debugging.
</p>

<div class="media-post" id="org09d244a">
<p>
</p><figure><video controls="1" src="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/2026-03-23-compressed.webm" type="video/webm"><a href="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/2026-03-23-compressed.webm">Download the video</a></video><figcaption><div>Screencast with audio: categorizing links by voice</div></figcaption></figure>
<p></p>

</div>

<p>
This is how it works:
</p>

<ol class="org-ol">
<li>It starts an <code>ffmpeg</code> recording process.</li>
<li>It starts <a href="https://github.com/snakers4/silero-vad">Silero voice activity detection</a>.</li>
<li>When it detects that speech has ended, it use <code>curl</code> to send the WAV to an OpenAI-compatible server (in my case, <a href="https://speaches.ai/">Speaches</a> with the <code>Systran/faster-whisper-base.en</code> model) for transcription, along with a prompt to try to influence the recognition.</li>
<li>It compares the result with the candidates using <code>string-distance</code> for an approximate match. It calls the code to move the current item to the right category, creating the category if needed.</li>
</ol>

<p>
Since this doesn't always result in the right match, I added an Undo command. I also have a Delete command for removing the current item, Scroll Up and Scroll Down, and a way to quit.
</p>
<div id="outline-container-categorizing-emacs-news-items-by-voice-in-org-mode-initial-thoughts" class="outline-3">
<h3 id="categorizing-emacs-news-items-by-voice-in-org-mode-initial-thoughts">Initial thoughts</h3>
<div class="outline-text-3" id="text-categorizing-emacs-news-items-by-voice-in-org-mode-initial-thoughts">
<p>
I used it to categorize lots of links in this week's Emacs News, and I think it's promising. I loved the way my hands didn't have to hover over the number keys or move between those and the characters. Using voice activity detection meant that I could just keep dictating categories instead of pressing keyboard shortcuts or using the foot pedal I recently dusted off. There's a slight delay, of course, but I think it's worth it. If this settles down and becomes a solid part of my workflow, I might even be able to knit or hand-sew while doing this step, or simply do some stretching exercises.
</p>

<p>
<b>What about using streaming speech recognition?</b> I've written some code to <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-streaming-speech-recognition-into-emacs-using-google-chrome-web-speech-api">use streaming speech recognition</a>, but the performance wasn't good enough when I tried it on my laptop (Lenovo P52 released in 2018, no configured GPU under Linux). The streaming server dropped audio segments in order to try to catch up. I'd rather have everything transcribed at the level of the model I want, even if I have to wait a little while. I also tried <a href="https://sachachua.com/dotemacs/index.html#writing-and-editing-speech-recognition-streaming-speech-recognition-into-emacs-using-google-chrome-web-speech-api">using the Web Speech API in Google Chrome for real-time speech transcription</a>, but it's a little finicky. I'm happy with the performance I get from either <a href="https://sachachua.com/blog/2026/01/queue-multiple-transcriptions-with-whisper-el-speech-recognition/">manually queueing speech segments</a> or <a href="https://sachachua.com/blog/2026/01/using-silero-voice-activity-detection-to-automatically-queue-multiple-transcriptions-with-natrys-whisper-el/">using VAD</a> and then using batch speech recognition with a model that's kept in memory (which is why I use a local server instead of a command-line tool). Come to think of it, I should try this with a higher-quality model like medium or large, just in case the latency turns out to be not that much more for this use case.
</p>

<p>
<b>What about external voice control systems</b> like <a href="https://talonvoice.com/">Talon Voice</a> or <a href="https://www.cursorless.org/">Cursorless</a>? They seem like neat ideas and lots of people use them. I think hacking something into Emacs with full access to its internals could be lots of fun too.
</p>

<p>
A <i>lot</i> of people have experimented with voice input for Emacs over the years. It could be fun to pick up ideas for commands and grammars. Some examples:
</p>

<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=8SkdfdXWYaI">Using Python to Code by Voice - YouTube</a> (2013)</li>
<li><a href="https://github.com/jgarvin/mandimus">jgarvin/mandimus: Use speech recognition to command your computer and Emacs. · GitHub</a></li>
<li><a href="https://github.com/ErikPrantare/cursorfree.el">ErikPrantare/cursorfree.el: Edit and navigate from anywhere in the buffer · GitHub</a></li>
<li><a href="https://git.sr.ht/~lepisma/emacs-speech-input/tree/master/item/README.org">~lepisma/emacs-speech-input</a> - uses the idea of a voice cursor, uses an LLM to execute editing instructions</li>
</ul>

<p>
<b>What about automating myself out of this loop?</b> I've considered training a classifier or sending the list to a large language model to categorize links in order to set more reasonable defaults, but I think I'd still want manual control, since the fun is in getting a sense of all the cool things that people are tinkering around with in the Emacs community. I found that with voice control, it was easier for me to say the category than to look for the category it suggested and then say "Okay" to accept the default. If I display the suggested category in a buffer with very large text (and possibly category-specific background colours), then I can quickly glance at it or use my peripheral vision. But yeah, it's probably easier to look at a page and say "Org Mode" than to look at the page, look at the default text, see if it matches Org Mode, and then say okay if it is.
</p>
</div>
</div>
<div id="outline-container-categorizing-emacs-news-items-by-voice-in-org-mode-ideas-for-next-steps" class="outline-3">
<h3 id="categorizing-emacs-news-items-by-voice-in-org-mode-ideas-for-next-steps">Ideas for next steps</h3>
<div class="outline-text-3" id="text-categorizing-emacs-news-items-by-voice-in-org-mode-ideas-for-next-steps">
<p>
I wonder how to line up several categories. I could probably rattle off a few without waiting for the next one to load, and just pause when I'm not sure. Maybe while there's a reasonably good match within the first 1-3 words, I'll take candidates from the front of the queue. Or I could delimit it with another easily-recognized word, like "next".
</p>

<p>
I want to make a more synchronous version of this idea so that I can have a speech-enabled drop-in replacement that I can use as my <code>y-or-n-p</code> while still being able to type <code>y</code> or <code>n</code>. This probably involves using <code>sit-for</code> and polling to see if it's done. And then I can use that to play Twenty Questions, but also to do more serious stuff. It would also be nice to have replacements for <code>read-string</code> and <code>completing-read</code>, since those block Emacs until the user enters something.
</p>

<p>
I might take a side-trip into a conversational interface for M-x doctor and M-x dunnet, because why not. Naturally, it also makes sense to voice-enable <a href="https://github.com/xenodium/agent-shell">agent-shell</a> and <a href="https://github.com/karthink/gptel">gptel</a> interactions.
</p>

<p>
I'd like to figure out a number- or word-based completion mechanism so that I can control Reddit link replacement as well, since I want to select from a list of links from the page. Maybe something similar to the way <a href="https://github.com/jcaw/voicemacs">voicemacs adds numbers to helm and company</a> or how <a href="http://www.cb1.com/~john/computing/emacs/handsfree/flexi-choose.html">flexi-choose.el</a> works.
</p>

<p>
I'm also thinking about how I can shift seamlessly between typing and speaking, like when I want to edit a link title. Maybe I can check if I'm in the minibuffer and what kind of minibuffer I'm in, perhaps like the way <a href="https://github.com/oantolin/embark">Embark</a> does.
</p>

<p>
It would be really cool to define speech commands by reusing the keymap structure that menus also use. This is how to <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Easy-Menu.html">define a menu</a> in Emacs Lisp:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">easy-menu-define</span> words-menu global-map
  <span class="org-doc">"Menu for word navigation commands."</span>
  <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"Words"</span>
     [<span class="org-string">"Forward word"</span> forward-word]
     [<span class="org-string">"Backward word"</span> backward-word]))
</code></pre>
</div>


<p>
and this is how to <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Modifying-Menus.html">set just one binding</a>:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(keymap-set-after my-menu <span class="org-string">"&lt;drink&gt;"</span>
  <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"Drink"</span> . drink-command) <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">eat</span>)
</code></pre>
</div>


<p>
That makes sense to reuse for speech commands. I'd also like to be able to specify aliases while hiding them or collapsing them for a "What can I say" help view&hellip; Also, if keymaps work, then maybe minor modes or transient maps could work? This sort of feels like it should be the voice equivalent of a transient map.
</p>
</div>
</div>
<div id="outline-container-categorizing-emacs-news-items-by-voice-in-org-mode-the-code-so-far" class="outline-3">
<h3 id="categorizing-emacs-news-items-by-voice-in-org-mode-the-code-so-far">The code so far</h3>
<div class="outline-text-3" id="text-categorizing-emacs-news-items-by-voice-in-org-mode-the-code-so-far">

<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-emacs-news-categorize-with-voice</span> (<span class="org-type">&amp;optional</span> skip-browse)
  (<span class="org-keyword">interactive</span> (list current-prefix-arg))
  (<span class="org-keyword">unless</span> skip-browse
    (my-spookfox-browse))
  (speech-input-cancel-recording)
  (<span class="org-keyword">let</span> ((default (<span class="org-keyword">if</span> (fboundp <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-emacs-news-guess-category</span>) (my-emacs-news-guess-category))))
    (speech-input-from-list
     (<span class="org-keyword">if</span> default
         (format <span class="org-string">"Category (%s): "</span> default)
       <span class="org-string">"Category: "</span>)
     <span class="org-highlight-quoted-quote">'</span>((<span class="org-string">"Org Mode"</span> <span class="org-string">"Org"</span> <span class="org-string">"Org Mode"</span>)
       <span class="org-string">"Other"</span>
       <span class="org-string">"Emacs Lisp"</span>
       <span class="org-string">"Coding"</span>
       (<span class="org-string">"Emacs configuration"</span> <span class="org-string">"Config"</span> <span class="org-string">"Configuration"</span>)
       (<span class="org-string">"Appearance"</span> <span class="org-string">"Appearance"</span>)
       (<span class="org-string">"Default"</span> <span class="org-string">"Okay"</span> <span class="org-string">"Default"</span>)
       <span class="org-string">"Community"</span>
       <span class="org-string">"AI"</span>
       <span class="org-string">"Writing"</span>
       (<span class="org-string">"Reddit"</span> <span class="org-string">"Read it"</span> <span class="org-string">"Reddit"</span>)
       <span class="org-string">"Shells"</span>
       <span class="org-string">"Navigation"</span>
       <span class="org-string">"Fun"</span>
       (<span class="org-string">"Dired"</span> <span class="org-string">"Directory"</span> <span class="org-string">"Dir ed"</span>)
       (<span class="org-string">"Mail, news, and chat"</span> <span class="org-string">"News"</span> <span class="org-string">"Mail"</span> <span class="org-string">"Chat"</span>)
       <span class="org-string">"Multimedia"</span>
       <span class="org-string">"Scroll down"</span>
       <span class="org-string">"Scroll up"</span>
       <span class="org-string">"Web"</span>
       <span class="org-string">"Delete"</span>
       <span class="org-string">"Skip"</span>
       <span class="org-string">"Undo"</span>
       (<span class="org-string">"Quit"</span> <span class="org-string">"Quit"</span> <span class="org-string">"Cancel"</span> <span class="org-string">"All done"</span>))
     (<span class="org-keyword">lambda</span> (result text)
       (message <span class="org-string">"Recognized %s original %s"</span> result text)
       (<span class="org-keyword">pcase</span> result
         (<span class="org-string">"Undo"</span>
          (undo)
          (my-emacs-news-categorize-with-voice t))
         (<span class="org-string">"Skip"</span>
          (forward-line)
          (my-emacs-news-categorize-with-voice))
         (<span class="org-string">"Quit"</span>
          (message <span class="org-string">"All done."</span>)
          (speech-input-cancel-recording))
         (<span class="org-string">"Reddit"</span>
          (my-emacs-news-replace-reddit-link)
          (my-emacs-news-categorize-with-voice t))
         (<span class="org-string">"Scroll down"</span>
          (my-spookfox-scroll-down)
          (my-emacs-news-categorize-with-voice t))
         (<span class="org-string">"Scroll up"</span>
          (my-spookfox-scroll-up)
          (my-emacs-news-categorize-with-voice t))
         (<span class="org-string">"Delete"</span>
          (delete-line)
          (undo-boundary)
          (my-emacs-news-categorize-with-voice))
         (<span class="org-string">"Default"</span>
          (my-org-move-current-item-to-category
           (concat default <span class="org-string">":"</span>))
          (undo-boundary)
          (my-emacs-news-categorize-with-voice))
         (_
          (my-org-move-current-item-to-category
           (concat result <span class="org-string">":"</span>))
          (undo-boundary)
          (my-emacs-news-categorize-with-voice))))
     t)))
</code></pre>
</div>


<p>
It uses <a href="https://sachachua.com/dotemacs#spookfox">Spookfox to control Firefox from Emacs</a>:
</p>

<p>

</p><div class="org-src-container">
<pre class="src src-emacs-lisp" id="org22d90d7"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-spookfox-scroll-down</span> ()
  (<span class="org-keyword">interactive</span>)
  (spookfox-js-injection-eval-in-active-tab <span class="org-string">"window.scrollBy(0, document.documentElement.clientHeight);"</span> t))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-spookfox-scroll-up</span> ()
  (<span class="org-keyword">interactive</span>)
  (spookfox-js-injection-eval-in-active-tab <span class="org-string">"window.scrollBy(0, -document.documentElement.clientHeight);"</span>))
</code></pre>
</div>


<p></p>

<p>

</p><div class="org-src-container">
<pre class="src src-emacs-lisp" id="orga82aa0d"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-spookfox-background-tab</span> (url <span class="org-type">&amp;rest</span> args)
  <span class="org-doc">"Open URL as a background tab."</span>
  (<span class="org-keyword">if</span> spookfox&#45;&#45;connected-clients
      (spookfox-tabs&#45;&#45;request (cl-first spookfox&#45;&#45;connected-clients) <span class="org-string">"OPEN_TAB"</span> <span class="org-highlight-quoted-quote">`</span>(<span class="org-builtin">:url</span> ,url))
    (browse-url url)))
</code></pre>
</div>


<p></p>

<p>
It also uses these functions for <a href="https://sachachua.com/dotemacs#digital-index-piles-with-emacs">categorizing Org Mode items</a>:
</p>

<p>

</p><div class="org-src-container">
<pre class="src src-emacs-lisp" id="org955687d"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-org-move-current-item-to-category</span> (category)
    <span class="org-doc">"Move current list item under CATEGORY earlier in the list.</span>
<span class="org-doc">  CATEGORY can be a string or a list of the form (text indent regexp).</span>
<span class="org-doc">  Point should be on the next line to process, even if a new category</span>
<span class="org-doc">  has been inserted."</span>
    (<span class="org-keyword">interactive</span> (list (completing-read <span class="org-string">"Category: "</span> (my-org-get-list-categories))))
    (<span class="org-keyword">when</span> category
      (<span class="org-keyword">let*</span> ((col (current-column))
             (item (point-at-bol))
             (struct (org-list-struct))
             (category-text (<span class="org-keyword">if</span> (stringp category) category (elt category 0)))
             (category-indent (<span class="org-keyword">if</span> (stringp category) 2 (+ 2 (elt category 1))))
             (category-regexp (<span class="org-keyword">if</span> (stringp category) category (elt category 2)))
             (end (elt (car (last struct)) 6))
             (pos (point))
             s)
        (<span class="org-keyword">setq</span> s (org-remove-indentation (buffer-substring-no-properties item (org-list-get-item-end item struct))))
        (<span class="org-keyword">save-excursion</span>
          (<span class="org-keyword">if</span> (string= category-text <span class="org-string">"x"</span>)
              (org-list-send-item item <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">delete</span> struct)
            (goto-char (caar struct))
            (<span class="org-keyword">if</span> (re-search-forward (concat <span class="org-string">"^ *- +"</span> category-regexp) end t)
                (<span class="org-keyword">progn</span>
                  <span class="org-comment-delimiter">;; </span><span class="org-comment">needs a patch to ol.el to check if stringp</span>
                  (org-list-send-item item (point-at-bol) struct)
                  (org-move-item-down)
                  (org-indent-item))
              (goto-char end)
              (org-list-insert-item
               (point-at-bol)
               struct (org-list-prevs-alist struct))
              (<span class="org-keyword">let</span> ((old-struct (copy-tree struct)))
                (org-list-set-ind (point-at-bol) struct 0)
                (org-list-struct-fix-bul struct (org-list-prevs-alist struct))
                (org-list-struct-apply-struct struct old-struct))
              (goto-char (point-at-eol))
              (insert category-text)
              (org-list-send-item item <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">end</span> struct)
              (org-indent-item)
              (org-indent-item))
            (recenter))))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-org-guess-list-category</span> (<span class="org-type">&amp;optional</span> categories)
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">require</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">cl-lib</span>)
  (<span class="org-keyword">unless</span> categories
    (<span class="org-keyword">setq</span> categories
          (my-helm-org-list-categories-init-candidates)))
  (<span class="org-keyword">let*</span> ((beg (line-beginning-position))
         (end (line-end-position))
         (string (buffer-substring-no-properties beg end))
         (found
          (cl-member string
                     categories
                     <span class="org-builtin">:test</span>
                     (<span class="org-keyword">lambda</span> (string cat-entry)
                       (<span class="org-keyword">unless</span> (string= (car cat-entry) <span class="org-string">"x"</span>)
                         (string-match (regexp-quote (downcase (car cat-entry)))
                                       string))))))
    (<span class="org-keyword">when</span> (car found)
      (my-org-move-current-item-to-category
       (cdr (car found)))
      t)))
</code></pre>
</div>


<p></p>

<p>
For the <code>speech-input</code> functions, experimental code is at <a href="https://codeberg.org/sachac/speech-input">https://codeberg.org/sachac/speech-input</a> .
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/03/categorizing-emacs-news-items-by-voice-in-org-mode/index.org">View Org source for this post</a></div><p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KMER8FH7NZT56ENT0NHE36Q0" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F03%2Fcategorizing-emacs-news-items-by-voice-in-org-mode%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Using speech recognition for on-the-fly translations in Emacs and faking in-buffer completion for the results</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-03-31T16:31:15Z</updated>
    <published>2026-02-27T20:11:58Z</published>
    <category term="audio" />
<category term="speech-recognition" />
<category term="emacs" />
<category term="speech" />
		<id>https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/</id>
		<content type="html"><![CDATA[<div class="update" id="orgeabb215">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-03-31">[2026-03-31 Tue]</time></span>: I added the recognized text so that I can confirm what was translated. I also moved my-type-with-hint to <a href="https://codeberg.org/sachac/learn-lang/src/branch/main/learn-lang-type.el">learn-lang-type-with-hint</a>.
</p>

</div>

<p>
When I'm writing a journal entry in French, I
sometimes want to translate a phrase that I can't
look up word by word using a dictionary.
Instead of switching to a browser, I can use an
Emacs function to prompt me for text and either
insert or display the translation.
The <a href="https://github.com/alphapapa/plz.el">plz</a> library makes HTTP requests slightly
neater.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-lang-en-to-fr</span> (text <span class="org-type">&amp;optional</span> display-only)
  (<span class="org-keyword">interactive</span> (list (read-string <span class="org-string">"Text: "</span>) current-prefix-arg))
  (<span class="org-keyword">let*</span> ((url <span class="org-string">"https://translation.googleapis.com/language/translate/v2"</span>)
         (params <span class="org-highlight-quoted-quote">`</span>((<span class="org-string">"key"</span> . ,(getenv <span class="org-string">"GOOGLE_API_KEY"</span>))
                   (<span class="org-string">"q"</span> . ,text)
                   (<span class="org-string">"source"</span> . <span class="org-string">"en"</span>)
                   (<span class="org-string">"target"</span> . <span class="org-string">"fr"</span>)
                   (<span class="org-string">"format"</span> . <span class="org-string">"text"</span>)))
         (query-string (mapconcat
                        (<span class="org-keyword">lambda</span> (pair)
                          (format <span class="org-string">"%s=%s"</span>
                                  (url-hexify-string (car pair))
                                  (url-hexify-string (cdr pair))))
                        params
                        <span class="org-string">"&amp;"</span>))
         (full-url (concat url <span class="org-string">"?"</span> query-string)))
    (<span class="org-keyword">let*</span> ((response (plz <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">get</span> full-url <span class="org-builtin">:as</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">json-read</span>))
           (data (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">data</span> response))
           (translations (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">translations</span> data))
           (first-translation (car translations))
           (translated-text (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">translatedText</span> first-translation)))
      (<span class="org-keyword">when</span> (called-interactively-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">any</span>)
        (<span class="org-keyword">if</span> display-only
            (message <span class="org-string">"%s"</span> translated-text)
          (insert translated-text)))
      translated-text)))
</code></pre>
</div>


<p>
I think it would be even nicer if I could use speech synthesis, so I can keep it a little more separate from my typing thoughts. I want to be able to say "Okay, translate &hellip;" or "Okay, &hellip; in French" to get a translation. I've been using <a href="https://github.com/sachac/whisper.el/">my fork of natrys/whisper.el</a> for <a href="https://sachachua.com/topic/speech-recognition/">speech recognition</a> in English, and I like it a lot. By adding a function to <code>whisper-after-transcription-hook</code>, I can modify the intermediate results before they're inserted into the buffer.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-translate</span> ()
  (goto-char (point-min))
  (<span class="org-keyword">let</span> ((case-fold-search t))
    (<span class="org-keyword">when</span> (re-search-forward <span class="org-string">"okay[,\\.]? translate[,\\.]? </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">okay[,\\.]? </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"> in French"</span> nil t)
      (<span class="org-keyword">let*</span> ((s (<span class="org-keyword">or</span> (match-string 1) (match-string 2)))
             (translation (<span class="org-keyword">save-match-data</span> (my-lang-en-to-fr s))))
        (replace-match
         (propertize translation
                     <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-hint</span> translation
                     <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-original</span> s
                     <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">help-echo</span> s))))))

(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper</span>
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-after-transcription-hook</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-whisper-translate</span> 70))
</code></pre>
</div>


<p>
But that's too easy. I want to actually type things myself so that I get more practice. Something like an autocomplete suggestion would be handy as a way of showing me a hint at the cursor. The usual completion-at-point functions are too eager to insert things if there's only one candidate, so we'll just fake it with an overlay. This code works only with my whisper.el fork because it supports using a list of functions for <code>whisper-insert-text-at-point</code>.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-maybe-type-with-hints</span> (text)
  <span class="org-doc">"Add this function to `</span><span class="org-doc"><span class="org-constant">whisper-insert-text-at-point</span></span><span class="org-doc">'."</span>
  (<span class="org-keyword">let*</span> ((hint (<span class="org-keyword">and</span> text (org-find-text-property-in-string <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-hint</span> text)))
         (original (<span class="org-keyword">and</span> text (org-find-text-property-in-string <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-original</span> text))))
    (<span class="org-keyword">if</span> hint
        (<span class="org-keyword">progn</span>
          (learn-lang-type-with-hint hint original)
          nil)
      text)))
</code></pre>
</div>


<p>
Here's a demonstration of me saying "Okay, this is a test, in French.":
</p>

<div class="media-post" id="orgdf2cbf2">
<p>
</p><figure><video controls="1" src="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/2026-02-27-translate-and-type-with-hints.webm" type="video/webm"><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/2026-02-27-translate-and-type-with-hints.webm">Download the video</a></video><figcaption><div>Screencast of using speech recognition to translate into French and provide a hint when typing</div></figcaption></figure>
<p></p>

</div>

<p>
Since we're faking in-buffer completion here, maybe we can still get away with considering this as an entry for <a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/">Emacs Carnival February 2026: Completion</a> ? =)</p>

<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-using-speech-recognition-for-translations-in-emacs-and-faking-in-buffer-completion-for-the-results">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F02%2Fusing-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Using whisper.el to convert speech to text and save it to the currently clocked task in Org Mode or elsewhere</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-01-13T18:38:54Z</updated>
    <published>2026-01-04T01:23:57Z</published>
    <category term="emacs" />
<category term="audio" />
<category term="speech-recognition" />
<category term="speech" />
		<id>https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/</id>
		<content type="html"><![CDATA[<div class="update" id="org09f9e72">
<ul class="org-ul">
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-01-30">[2026-01-30 Fri]</time></span>: Major change: I switched to <a href="https://github.com/sachac/whisper.el/tree/whisper-insert-text-at-point-function">my fork</a> of natrys/whisper.el so that I can specify functions that change the window configuration etc.</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-01-13">[2026-01-13 Tue]</time></span>: Change main function to <code>my-whisper-run</code>, use seq-reduce to go through the functions.</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-01-09">[2026-01-09 Fri]</time></span>: Added code for automatically capturing screenshots, saving text, working with a list of functions.</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-01-08">[2026-01-08 Thu]</time></span>: Added demo, fixed some bugs.</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-01-04">[2026-01-04 Sun]</time></span>: Added note about difference from MELPA package, fixed :vc</li>
</ul>

</div>

<p>
I want to get my thoughts into the computer quickly, and talking might be a good way to do some of that. <a href="https://github.com/openai/whisper">OpenAI Whisper</a> is reasonably good at recognizing my speech now and <a href="https://github.com/natrys/whisper.el">whisper.el</a> gives me a convenient way to call <a href="https://github.com/ggml-org/whisper.cpp">whisper.cpp</a> from Emacs with a single keybinding. (Note: This is not the same <a href="https://melpa.org/#/whisper">whisper</a> package as the one on MELPA.) Here is how I have it set up for reasonable performance on my Lenovo P52 with just the CPU, no GPU.
</p>

<p>
I've bound <code>&lt;f9&gt;</code> to the command <code>whisper-run</code>. I press <code>&lt;f9&gt;</code> to start recording, talk, and then press <code>&lt;f9&gt;</code> to stop recording. By default, it inserts the text into the buffer at the current point. I've set <code>whisper-return-cursor-to-start</code> to <code>nil</code> so that I can keep going.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">use-package</span> whisper
  <span class="org-builtin">:vc</span> (<span class="org-builtin">:url</span> <span class="org-string">"https://github.com/natrys/whisper.el"</span>)
  <span class="org-builtin">:load-path</span> <span class="org-string">"~/vendor/whisper.el"</span>
  <span class="org-builtin">:config</span>
  (<span class="org-keyword">setq</span> whisper&#45;&#45;mode-line-recording-indicator <span class="org-string">"&#9210;"</span>)
  (<span class="org-keyword">setq</span> whisper-quantize <span class="org-string">"q4_0"</span>)
  (<span class="org-keyword">setq</span> whisper-install-directory <span class="org-string">"~/vendor"</span>)
  (<span class="org-keyword">setq</span> whisper&#45;&#45;install-path (concat
     (expand-file-name (file-name-as-directory whisper-install-directory))
     <span class="org-string">"whisper.cpp/"</span>))
  <span class="org-comment-delimiter">;; </span><span class="org-comment">Get it running with whisper-server-mode set to nil first before you switch to 'local.</span>
  <span class="org-comment-delimiter">;; </span><span class="org-comment">If you change models,</span>
  <span class="org-comment-delimiter">;; </span><span class="org-comment">(whisper-install-whispercpp (whisper&#45;&#45;check-install-and-run nil "whisper-start"))</span>
  (<span class="org-keyword">setq</span> whisper-server-mode <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">local</span>)
  (<span class="org-keyword">setq</span> whisper-model <span class="org-string">"base"</span>)
  (<span class="org-keyword">setq</span> whisper-return-cursor-to-start nil)
  <span class="org-comment-delimiter">;</span><span class="org-comment">(setq whisper&#45;&#45;ffmpeg-input-device "alsa_input.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.analog-stereo")</span>
  (<span class="org-keyword">setq</span> whisper&#45;&#45;ffmpeg-input-device <span class="org-string">"VirtualMicSink.monitor"</span>)
  (<span class="org-keyword">setq</span> whisper-language <span class="org-string">"en"</span>)
  (<span class="org-keyword">setq</span> whisper-recording-timeout 3000)
  (<span class="org-keyword">setq</span> whisper-before-transcription-hook nil)
  (<span class="org-keyword">setq</span> whisper-use-threads (1- (num-processors)))
  (<span class="org-keyword">setq</span> whisper-transcription-buffer-name-function <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper&#45;&#45;simple-transcription-buffer-name</span>)
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-after-transcription-hook</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-subed-fix-common-errors-from-start</span> -100)
  <span class="org-builtin">:bind</span>
  ((<span class="org-string">"&lt;f9&gt;"</span> . whisper-run)
   (<span class="org-string">"C-&lt;f9&gt;"</span> . my-whisper-run)
   (<span class="org-string">"S-&lt;f9&gt;"</span> . my-whisper-replay)
   (<span class="org-string">"M-&lt;f9&gt;"</span> . my-whisper-toggle-language)))
</code></pre>
</div>


<p>
Let's see if we can process "Computer remind me to&hellip;":
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-org-reminder-template</span> <span class="org-string">"t"</span>)

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-org-process-reminder</span> ()
  (<span class="org-keyword">let</span> ((text (buffer-string))
        reminder)
    (<span class="org-keyword">when</span> (string-match <span class="org-string">"computer[,</span><span class="org-string"><span class="org-warning">\</span></span><span class="org-string">.]? reminds? me to </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> text)
      (<span class="org-keyword">setq</span> reminder (match-string 1 text))
      (<span class="org-keyword">save-window-excursion</span>
        (<span class="org-keyword">with-current-buffer</span> (<span class="org-keyword">if</span> (markerp whisper&#45;&#45;marker) (marker-buffer whisper&#45;&#45;marker) (current-buffer))
          (<span class="org-keyword">when</span> (markerp whisper&#45;&#45;marker) (goto-char whisper&#45;&#45;marker))
          (org-capture nil my-whisper-org-reminder-template)
          (insert reminder)
          (org-capture-finalize)))
      (erase-buffer))))

(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper</span>
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-after-transcription-hook</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-whisper-org-process-reminder</span> 50))
</code></pre>
</div>


<p>
Disk space is inexpensive and backups are great, so let's save each file using the timestamp.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-dir</span> <span class="org-string">"~/recordings/whisper/"</span>)
(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-set-temp-filename</span> ()
  (<span class="org-keyword">setq</span> whisper&#45;&#45;temp-file (expand-file-name
                            (format-time-string <span class="org-string">"%Y-%m-%d-%H-%M-%S.wav"</span>)
                            my-whisper-dir)))

(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper</span>
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-before-transcription-hook</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-set-temp-filename</span>))
</code></pre>
</div>


<p>
The technology isn't quite there yet to do real-time audio transcription so that I can see what it understands while I'm saying things, but that might be distracting anyway. If I do it in short segments, it might still be okay. I can replay the most recently recorded snippet in case it's missed something and I've forgotten what I just said.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-replay</span> (<span class="org-type">&amp;optional</span> file)
  <span class="org-doc">"Replay the last temporary recording."</span>
  (<span class="org-keyword">interactive</span> (list
                (<span class="org-keyword">when</span> current-prefix-arg
                  (read-file-name <span class="org-string">"File: "</span> my-whisper-dir))))
  (<span class="org-keyword">setq</span> whisper&#45;&#45;temp-file (<span class="org-keyword">or</span> file whisper&#45;&#45;temp-file))
  (mpv-play whisper&#45;&#45;temp-file))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-insert-retry</span> (<span class="org-type">&amp;optional</span> file)
  (<span class="org-keyword">interactive</span> (list
                (<span class="org-keyword">when</span> current-prefix-arg
                  (read-file-name <span class="org-string">"File: "</span> my-whisper-dir))))
  (whisper&#45;&#45;cleanup-transcription)
  (<span class="org-keyword">setq</span> whisper&#45;&#45;marker (point-marker)
        whisper&#45;&#45;temp-file (<span class="org-keyword">or</span> file whisper&#45;&#45;temp-file))
  (whisper&#45;&#45;transcribe-audio))
</code></pre>
</div>


<p>
Il peut aussi comprendre le français.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-toggle-language</span> ()
  <span class="org-doc">"Set the language explicitly, since sometimes auto doesn't figure out the right one."</span>
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">setq</span> whisper-language (<span class="org-keyword">if</span> (string= whisper-language <span class="org-string">"en"</span>) <span class="org-string">"fr"</span> <span class="org-string">"en"</span>))
  <span class="org-comment-delimiter">;; </span><span class="org-comment">If using a server, we need to restart for the language</span>
  (<span class="org-keyword">when</span> (process-live-p whisper&#45;&#45;server-process) (kill-process whisper&#45;&#45;server-process))
  (message <span class="org-string">"%s"</span> whisper-language))
</code></pre>
</div>


<p>
I could use this with <code>org-capture</code>, but that's a lot of keystrokes. My shortcut for org-capture is <code>C-c r</code>. I need to press at least one key to set the template, <code>&lt;f9&gt;</code> to start recording, <code>&lt;f9&gt;</code> to stop recording, and <code>C-c C-c</code> to save it. I want to be able to capture notes to my currently clocked in task without having an Org capture buffer interrupt my display.
</p>

<p>
To clock in, I can use <code>C-c C-x i</code> or my <code>!</code> <a href="https://sachachua.com/dotemacs#org-mode-keyboard-shortcuts-other-speed-commands">speed command</a>. Bonus: the modeline displays the current task to keep me on track, and I can use <code>org-clock-goto</code> (which I've bound to <code>C-c j</code>) to jump to it.
</p>

<p>
Then, when I'm looking at something else and I want to record a note, I can press <code>&lt;f9&gt;</code> to start the recording, and then <code>C-&lt;f9&gt;</code> to save it to my currently clocked task along with a link to whatever I'm looking at. (Update: Ooh, now I can save a screenshot too.)
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-reset</span> (text)
  (<span class="org-keyword">setq</span> my-whisper-skip-annotation nil)
  (remove-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-insert-text-at-point</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-org-save-to-clocked-task</span>)
  text)
</code></pre>
</div>



<div class="org-src-container">
<pre class="src src-emacs-lisp" id="org513fed4"><code><span class="org-comment-delimiter">;; </span><span class="org-comment">Only works with my tweaks to whisper.el</span>
<span class="org-comment-delimiter">;; </span><span class="org-comment">https://github.com/sachac/whisper.el/tree/whisper-insert-text-at-point-function</span>
(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper</span>
  (<span class="org-keyword">setq</span> whisper-insert-text-at-point
        <span class="org-highlight-quoted-quote">'</span>(my-whisper-handle-commands
          my-whisper-save-text
          my-whisper-save-to-file
          my-whisper-maybe-expand-snippet
          my-whisper-maybe-type
          my-whisper-maybe-type-with-hints
          my-whisper-insert
          my-whisper-reset)))
</code></pre>
</div>



<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-last-annotation</span> nil <span class="org-doc">"Last annotation so we can skip duplicates."</span>)
(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-skip-annotation</span> nil)
(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-target-markers</span> nil <span class="org-doc">"List of markers to send text to."</span>)

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-insert</span> (text)
  (<span class="org-keyword">let</span> ((markers
         (<span class="org-keyword">cond</span>
          ((null my-whisper-target-markers)
           (list whisper&#45;&#45;marker)) <span class="org-comment-delimiter">; </span><span class="org-comment">current point where whisper was started</span>
          ((listp my-whisper-target-markers)
           my-whisper-target-markers)
          ((markerp my-whisper-target-markers)
           (list my-whisper-target-markers))))
        (orig-point (point))
        (orig-buffer (current-buffer)))
    (<span class="org-keyword">when</span> text
      (mapcar (<span class="org-keyword">lambda</span> (marker)
                (<span class="org-keyword">with-current-buffer</span> (marker-buffer marker)
                  (<span class="org-keyword">save-restriction</span>
                    (widen)
                    (<span class="org-keyword">when</span> (markerp marker) (goto-char marker))
                    (<span class="org-keyword">when</span> (<span class="org-keyword">and</span> (derived-mode-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org-mode</span>) (org-at-drawer-p))
                      (insert <span class="org-string">"\n"</span>))
                    (whisper&#45;&#45;insert-text
                     (concat
                      (<span class="org-keyword">if</span> (looking-back <span class="org-string">"[ \t\n]</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">^"</span>)
                          <span class="org-string">""</span>
                        <span class="org-string">" "</span>)
                      (string-trim text)))
                    <span class="org-comment-delimiter">;; </span><span class="org-comment">Move the marker forward here</span>
                    (move-marker marker (point)))))
              markers)
      (<span class="org-keyword">when</span> my-whisper-target-markers
        (goto-char orig-point))
      nil)))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-maybe-type</span> (text)
  (<span class="org-keyword">when</span> text
    (<span class="org-keyword">if</span> (frame-focus-state)
        text
      (make-process <span class="org-builtin">:name</span> <span class="org-string">"xdotool"</span> <span class="org-builtin">:command</span>
                    (list <span class="org-string">"xdotool"</span> <span class="org-string">"type"</span>
                          text))
      nil)))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-clear-markers</span> ()
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">setq</span> my-whisper-target-markers nil))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-use-current-point</span> (<span class="org-type">&amp;optional</span> add)
  (<span class="org-keyword">interactive</span> (list current-prefix-arg))
  (<span class="org-keyword">if</span> add
      (<span class="org-keyword">push</span> (point-marker) my-whisper-target-markers)
    (<span class="org-keyword">setq</span> my-whisper-target-markers (list (point-marker)))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-run-at-point</span> (<span class="org-type">&amp;optional</span> add)
  (<span class="org-keyword">interactive</span> (list current-prefix-arg))
  (my-whisper-clear-markers)
  (whisper-run))

(keymap-global-set <span class="org-string">"&lt;f9&gt;"</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-run-at-point</span>)
(keymap-global-set <span class="org-string">"&lt;kp-1&gt;"</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">whisper-run</span>)

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-jump-to-marker</span> ()
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">with-current-buffer</span> (marker-buffer (car my-whisper-target-markers))
    (goto-char (car my-whisper-target-markers))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-use-currently-clocked-task</span> (<span class="org-type">&amp;optional</span> add)
  (<span class="org-keyword">interactive</span> (list current-prefix-arg))
  (<span class="org-keyword">save-window-excursion</span>
    (<span class="org-keyword">save-restriction</span>
      (<span class="org-keyword">save-excursion</span>
        (org-clock-goto)
        (org-end-of-meta-data)
        (org-end-of-subtree)
        (<span class="org-keyword">if</span> add
            (<span class="org-keyword">push</span> (point-marker) my-whisper-target-markers)
          (<span class="org-keyword">setq</span> my-whisper-target-markers (list (point-marker))))))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-run</span> (<span class="org-type">&amp;optional</span> skip-annotation)
  (<span class="org-keyword">interactive</span> (list current-prefix-arg))
  (<span class="org-keyword">require</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">whisper</span>)
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-insert-text-at-point</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-org-save-to-clocked-task</span> -10)
  (whisper-run)
  (<span class="org-keyword">when</span> skip-annotation
    (<span class="org-keyword">setq</span> my-whisper-skip-annotation t)))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-save-text</span> (text)
  <span class="org-doc">"Save TEXT beside `</span><span class="org-doc"><span class="org-constant">whisper&#45;&#45;temp-file</span></span><span class="org-doc">'."</span>
  (<span class="org-keyword">when</span> text
    (<span class="org-keyword">let</span> ((link (org-store-link nil)))
      (<span class="org-keyword">with-temp-file</span> (concat (file-name-sans-extension whisper&#45;&#45;temp-file) <span class="org-string">".txt"</span>)
        (<span class="org-keyword">when</span> link
          (insert link <span class="org-string">"\n"</span>))
        (insert text)))
    text))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-org-save-to-clocked-task</span> (text)
  (<span class="org-keyword">when</span> text
    (<span class="org-keyword">save-window-excursion</span>
      (<span class="org-keyword">with-current-buffer</span> (<span class="org-keyword">if</span> (markerp whisper&#45;&#45;marker) (marker-buffer whisper&#45;&#45;marker) (current-buffer))
        (<span class="org-keyword">when</span> (markerp whisper&#45;&#45;marker) (goto-char whisper&#45;&#45;marker))
        <span class="org-comment-delimiter">;; </span><span class="org-comment">Take a screenshot maybe</span>
        (<span class="org-keyword">let*</span> ((link (<span class="org-keyword">and</span> (not my-whisper-skip-annotation)
                          (org-store-link nil)))
               (region (<span class="org-keyword">and</span> (region-active-p) (buffer-substring (region-beginning) (region-end))))
               (screenshot-filename
                (<span class="org-keyword">when</span> (<span class="org-keyword">or</span>
                       (null link)
                       (not (string= my-whisper-last-annotation link))
                       (not (frame-focus-state))) <span class="org-comment-delimiter">; </span><span class="org-comment">not in focus, take a screenshot</span>
                  (my-screenshot-current-screen (concat (file-name-sans-extension whisper&#45;&#45;temp-file) <span class="org-string">".png"</span>)))))
          (<span class="org-keyword">if</span> (org-clocking-p)
              (<span class="org-keyword">save-window-excursion</span>
                (<span class="org-keyword">save-restriction</span>
                  (<span class="org-keyword">save-excursion</span>
                    (org-clock-goto)
                    (org-end-of-subtree)
                    (<span class="org-keyword">unless</span> (bolp)
                      (insert <span class="org-string">"\n"</span>))
                    (insert <span class="org-string">"\n"</span>)
                    (<span class="org-keyword">if</span> (<span class="org-keyword">and</span> link (not (string= my-whisper-last-annotation link)))
                        (insert
                         (<span class="org-keyword">if</span> screenshot-filename
                             (concat <span class="org-string">"("</span> (org-link-make-string
                                          (concat <span class="org-string">"file:"</span> screenshot-filename)
                                          <span class="org-string">"screenshot"</span>) <span class="org-string"><span class="org-warning">") "</span></span><span class="org-warning">)</span>
                           <span class="org-string">""</span>)
                         link
                         <span class="org-string">"\n"</span>)
                      (<span class="org-keyword">when</span> screenshot-filename
                        (insert (org-link-make-string
                                 (concat <span class="org-string">"file:"</span> screenshot-filename)
                                 <span class="org-string">"screenshot"</span>)
                                <span class="org-string">"\n"</span>)))
                    (<span class="org-keyword">when</span> region
                      (insert <span class="org-string">"#+begin_example\n"</span> region <span class="org-string">"\n#+end_example\n"</span>))
                    (insert text <span class="org-string">"\n"</span>)
                    (<span class="org-keyword">setq</span> my-whisper-last-annotation link)))
                (run-at-time 0.5 nil (<span class="org-keyword">lambda</span> (text) (message <span class="org-string">"Added clock note: %s"</span> text)) text))
            <span class="org-comment-delimiter">;; </span><span class="org-comment">No clocked task, prompt for a place to capture it</span>
            (kill-new text)
            (<span class="org-keyword">setq</span> org-capture-initial text)
            (call-interactively <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org-capture</span>)
            <span class="org-comment-delimiter">;; </span><span class="org-comment">Delay the window configuration</span>
            (<span class="org-keyword">let</span> ((config (current-window-configuration)))
              (run-at-time 0.5 nil
                           (<span class="org-keyword">lambda</span> (text config)
                             (set-window-configuration config)
                             (message <span class="org-string">"Copied: %s"</span> text))
                           text config))))))))

(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org</span>
  (add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org-clock-in-hook</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-whisper-org-clear-saved-annotation</span>))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-org-clear-saved-annotation</span> ()
  (<span class="org-keyword">setq</span> my-whisper-org-last-annotation nil))
</code></pre>
</div>


<p>
Here's an idea for a function that saves the recognized text with a timestamp.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-notes</span> <span class="org-string">"~/sync/stream/narration.org"</span>)
(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-save-to-file</span> (text)
  (<span class="org-keyword">when</span> text
    (<span class="org-keyword">let</span> ((link (org-store-link nil)))
      (<span class="org-keyword">with-current-buffer</span> (find-file-noselect my-whisper-notes)
        (goto-char (point-max))
        (insert <span class="org-string">"\n\n"</span> (format-time-string <span class="org-string">"%H:%M "</span>) text <span class="org-string">"\n"</span> (<span class="org-keyword">if</span> link (concat link <span class="org-string">"\n"</span>) <span class="org-string">""</span>))
        (save-buffer)
        (run-at-time 0.5 nil (<span class="org-keyword">lambda</span> (text) (message <span class="org-string">"Saved to file: %s"</span> text)) text)))
    text))
</code></pre>
</div>


<p>
And now I can redo things if needed:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisper-redo</span> ()
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">setq</span> whisper&#45;&#45;marker (point-marker))
  (whisper&#45;&#45;transcribe-audio))
</code></pre>
</div>


<p>
I think I've just figured out my Pipewire setup so
that I can record audio in OBS while also being
able to do speech to text, without the audio
stuttering. <a href="https://github.com/rncbc/qpwgraph">qpwgraph</a> was super helpful
for visualizing the Pipewire connections and fixing them.
</p>


<div class="org-src-container">
<pre class="src src-sh"><code>systemctl &#45;&#45;user restart pipewire
sleep 2
pactl load-module module-null-sink <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink_name</span>=<span class="org-string">"VirtualMicSink"</span> <span class="org-variable-name">sink_properties</span>=device.description=VirtualMicSink
pactl load-module module-null-sink <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink_name</span>=<span class="org-string">"CombinedSink"</span> <span class="org-variable-name">sink_properties</span>=device.description=CombinedSink
<span class="org-keyword">if</span> pactl list short sources | grep -i pci-0000; <span class="org-keyword">then</span>
  pactl load-module module-loopback <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source</span>=<span class="org-string">"alsa_input.pci-0000_00_1f.3.analog-stereo"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink</span>=<span class="org-string">"VirtualMicSink"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">latency_msec</span>=100 <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">adjust_time</span>=1 <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='SysToVMic' node.name='SysToVMic' media.name='SysVToMic'"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='SysToVMic' node.name='SysToVMic' media.role='filter'"</span>
    <span class="org-variable-name">sink_input_properties</span>=media.role=filter
  pactl load-module module-loopback <span class="org-string">\ </span>   <span class="org-variable-name">source</span>=<span class="org-string">"alsa_output.pci-0000_00_1f.3.analog-stereo.monitor"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink</span>=<span class="org-string">"CombinedSink"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">node_name</span>=<span class="org-string">"SystemOutToCombined"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='SysOutToCombined' node.name='SysOutToCombined'"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='SysOutToCombined' node.name='SysOutToCombined' media.role='filter'"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">latency_msec</span>=100 <span class="org-variable-name">adjust_time</span>=1
<span class="org-keyword">fi</span>
<span class="org-keyword">if</span> pactl list short sources | grep -i yeti; <span class="org-keyword">then</span>
  pactl load-module module-loopback <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source</span>=<span class="org-string">"alsa_input.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.analog-stereo"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink</span>=<span class="org-string">"VirtualMicSink"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">latency_msec</span>=100 <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">adjust_time</span>=1 <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='YetiToVMic' node.name='YetiToVMic' media.name='YetiToVMic'"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='YetiToVMic' node.name='YetiToVMic' media.role='filter'"</span>
  pactl load-module module-loopback <span class="org-string">\ </span>   <span class="org-variable-name">source</span>=<span class="org-string">"alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.analog-stereo.monitor"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink</span>=<span class="org-string">"CombinedSink"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='YetiOutToCombined' node.name='YetiOutToCombined' media.name='YetiOutToCombined' "</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='YetiOutToCombined' node.name='YetiOutToCombined' media.role='filter'"</span> <span class="org-sh-escaped-newline">\</span>
    <span class="org-variable-name">latency_msec</span>=100 <span class="org-variable-name">adjust_time</span>=1
<span class="org-keyword">fi</span>
pactl load-module module-loopback <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">source</span>=<span class="org-string">"VirtualMicSink.monitor"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink</span>=<span class="org-string">"CombinedSink"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='VMicToCombined' node.name='VMicToCombined' media.name='VMicToCombined'"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='VMicToCombined' node.name='VMicToCombined' media.role='filter'"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">latency_msec</span>=100 <span class="org-variable-name">adjust_time</span>=1

pactl load-module module-null-sink <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink_name</span>=<span class="org-string">"ExtraSink1"</span> <span class="org-variable-name">sink_properties</span>=device.description=ExtraSink1

pactl load-module module-loopback <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">source</span>=<span class="org-string">"ExtraSink1.monitor"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink</span>=<span class="org-string">"CombinedSink"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">source_output_properties</span>=<span class="org-string">"node.description='ExtraSink1ToCombined' node.name='ExtraSink1ToCombined' media.name='ExtraSink1ToCombined'"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">sink_input_properties</span>=<span class="org-string">"node.description='ExtraSink1ToCombined' node.name='ExtraSink1ToCombined' media.role='filter'"</span> <span class="org-sh-escaped-newline">\</span>
  <span class="org-variable-name">latency_msec</span>=100 <span class="org-variable-name">adjust_time</span>=1
</code></pre>
</div>


<p>
Here's a demo:
</p>

<div class="media-post" id="org4ea7b1e">
<p>
</p><figure><video controls="1" src="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/2026-01-08_11.17.22.webm" type="video/webm"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/2026-01-08_11.17.22.vtt" srclang="en" default=""><a href="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/2026-01-08_11.17.22.webm">Download the video</a></video><figcaption><div>Screencast of using whisper.el to do speech-to-text into the current buffer, clocked-in task, or other function</div></figcaption></figure>
<p></p>

<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;" open="">
                  <summary><strong>Transcript</strong></summary>
<p>
</p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">00:00:00</span> <strong>Inserting into the current buffer</strong></div><span class="audio-time caption" data-start="0.000000" data-stop="5.239000">Here's a quick demonstration</span> <span class="audio-time caption" data-start="5.240000" data-stop="13.799000">of using whisper.el to log notes.</span> <div class="transcript-heading"><span class="audio-time" data-start="13.000000">00:00:13</span> <strong>Inserting text and moving on</strong></div><span class="audio-time caption" data-start="13.800000" data-stop="16.279000">I can insert text into the current buffer</span> <span class="audio-time caption" data-start="16.280000" data-stop="31.559000">one after the other.</span> <div class="transcript-heading"><span class="audio-time" data-start="31.000000">00:00:31</span> <strong>Clocking in</strong></div><span class="audio-time caption" data-start="31.560000" data-stop="33.159000">If I clock into a task,</span> <span class="audio-time caption" data-start="33.160000" data-stop="35.319000">I can add to the end of that clocked in task</span> <span class="audio-time caption" data-start="35.320000" data-stop="36.879000">using my custom code</span> <span class="audio-time caption" data-start="36.880000" data-stop="38.399000">by pressing C-&lt;f9&gt;</span> <span class="audio-time caption" data-start="38.400000" data-stop="52.999000">or whatever my shortcut was.</span> <span class="audio-time caption" data-start="53.000000" data-stop="65.839000">I can do that multiple times.</span> <div class="transcript-heading"><span class="audio-time" data-start="65.000000">00:01:05</span> <strong>Logging a note from a different file</strong></div><span class="audio-time caption" data-start="65.840000" data-stop="75.319000">I can do that while looking at a different file.</span> <div class="transcript-heading"><span class="audio-time" data-start="75.000000">00:01:15</span> <strong>I can look at an info page</strong></div><span class="audio-time caption" data-start="75.320000" data-stop="76.799000">I can do it looking at an info page, for example,</span> <span class="audio-time caption" data-start="76.800000" data-stop="78.599000">and annotations will include a link</span> <span class="audio-time caption" data-start="78.600000" data-stop="93.959000">back to whatever I was looking at.</span> <div class="transcript-heading"><span class="audio-time" data-start="93.000000">00:01:33</span> <strong>Adding without an annotation (C-u)</strong></div><span class="audio-time caption" data-start="93.960000" data-stop="96.479000">I just added an optional argument</span> <span class="audio-time caption" data-start="96.480000" data-stop="99.999000">so that I can also capture a note</span> <span class="audio-time caption" data-start="100.000000" data-stop="114.359000">without saving an annotation.</span> <span class="audio-time caption" data-start="114.360000" data-stop="117.319000">That way, if I'm going to say a lot of things</span> <span class="audio-time caption" data-start="117.320000" data-stop="118.839000">about the same buffer,</span> <span class="audio-time caption" data-start="118.840000" data-stop="120.519000">I don't have to have a lot of links</span> <span class="audio-time caption" data-start="120.520000" data-stop="162.719000">that I need to edit out.</span> <div class="transcript-heading"><span class="audio-time" data-start="162.000000">00:02:42</span> <strong>Saving to a different function</strong></div><span class="audio-time caption" data-start="162.720000" data-stop="177.680000">I can also have it save to a different function.</span>
<p></p>


</details>

</div>

<p>
And then I define a global shortcut in KDE that runs:
</p>


<div class="org-src-container">
<pre class="src src-sh"><code>/home/sacha/bin/xdotool-emacs key &#45;&#45;clearmodifiers F9
</code></pre>
</div>


<p>
So now I can dictate into other applications or save into Emacs.
Which suggests of course that I should get it working with C-f9 as well, if I can avoid the keyboard shortcut loop&hellip;
</p>

<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#multimedia-whisper">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/index.org">View Org source for this post</a></div><p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KE3D9XENS7FKCEJHF7SKR3TX" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Fusing-whisper-el-to-capture-text-to-speech-in-emacs%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Controlling my Android phone by voice</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2025-01-30T21:27:02Z</updated>
    <published>2025-01-22T19:45:32Z</published>
    <category term="speech" />
<category term="android" />
<category term="speechtotext" />
		<id>https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/</id>
		<content type="html"><![CDATA[<div class="update" id="org6bd6762">
<p>
<span class="timestamp-wrapper"><span class="timestamp">[2025-01-30 Thu]</span></span>: Fix timestamp format in toggle recording task.
</p>

</div>

<p>
I want to be able to use voice control to do
things on my phone while I'm busy washing dishes,
putting things away, knitting, or just keeping my
hands warm. It'll also be handy to have a way to
get things out of my head when the kiddo is
koala-ing me. I've been using my Google Pixel 8's
voice interface to set timers, send text messages,
and do quick web searches. Building on my <a href="https://sachachua.com/blog/2025/01/revisiting-wearable-computing/">recent
thoughts on wearable computing</a>, I decided to spend
some more time investigating the Google Assistant
and <a href="https://support.google.com/accessibility/android/answer/6151854">Voice Access</a> features in Android and setting
up other voice shortcuts.
</p>

<div class="sticky-toc" id="orga61ce05">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-tasker-routines">Tasker routines</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-voice-access">Voice Access</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-autoplay-an-emacs-tv-video">Autoplay an emacs.tv video</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-open-my-org-agenda-and-scroll-through-it">Open my Org agenda and scroll through it</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-add-and-open-notes-in-orgzly-revived">Add and open notes in Orgzly Revived</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-add-items-to-ourgroceries">Add items to OurGroceries</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-track-time">Track time</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-toggle-recording">Toggle recording</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#controlling-my-android-phone-by-voice-overall-next-steps">Overall, next steps</a></li>
</ul>
</div>

</div>
<div id="outline-container-controlling-my-android-phone-by-voice-tasker-routines" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-tasker-routines">Tasker routines</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-tasker-routines">
<p>
I switched back to Google Assistant from Gemini so
that I could run <a href="https://tasker.joaoapps.com/">Tasker</a> routines. I also found out
that I needed to switch the language from
English/Canada to English/US in order for my
Tasker scripts to run instead of Google Assistant
treating them as web searches. Once that was
sorted out, I could run Tasker tasks with "Hey
Google, run {task-name} in Tasker" and
parameterize them with "Hey Google, run
{task-name} with {parameter} in Tasker."
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-voice-access" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-voice-access">Voice Access</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-voice-access">
<p>
Learning how to use Voice Access to navigate,
click, and type on my phone was straightforward.
"Scroll down" works for webpages, while "scroll
right" works for the e-books I have in Libby.
Tapping items by text usually works. When it
doesn't, I can use "show labels", "show numbers",
or "show grid." The speech-to-text of "type &#x2026;"
isn't as good as Whisper, so I probably won't use
it for a lot of dictation, but it's fine for quick
notes. I can keep recording in the background so
that I have the raw audio in case I want to review
it or grab the WhisperX transcripts instead.
</p>

<p>
For some reason, saying "Hey Google, voice access"
to start up voice access has been leaving the
Assistant dialog on the screen, which makes it
difficult to interact with the screen I'm looking
at. I added a Tasker routine to start voice
access, wait a second, and tap on the screen to
dismiss the Assistant dialog.
</p>

<p>
<a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/Start%20Voice.tsk.xml">Start Voice.tsk.xml</a> - <a href="https://taskernet.com/shares/?user=AS35m8m%2BZ2P26xJtN1KnE37qxZgYPI9oNna95WRet8GZZ%2FlpPBB0ZwV39gUgnHnlCKWBSA%3D%3D&amp;id=Task%3AStart+Voice">Import via Taskernet</a>
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Start Voice.tsk.xml</strong></summary>

<div class="org-src-container">
<pre class="src src-nxml"><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TaskerData</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">""</span> <span class="org-nxml-attribute-local-name">dvi</span>=<span class="org-string">"1"</span> <span class="org-nxml-attribute-local-name">tv</span>=<span class="org-string">"6.3.13"</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Task</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"task24"</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737565479418</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737566416661</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">24</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Start Voice</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1000</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Share</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"Share"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Start voice access and dismiss the assistant dialog</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Accessibility,AutoInput</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Share</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">20</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">App</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">appClass</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.google.android.apps.accessibility.voiceaccess.LauncherActivity</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">appClass</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">appPkg</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.google.android.apps.accessibility.voiceaccess</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">appPkg</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">label</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Voice Access</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">label</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">App</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">30</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">107361459</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Bundle</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Vals</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"val"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Password</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Password</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Password-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Password-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Actions To Perform: click(point,564\,1045)</span>
<span class="org-nxml-text">Not In AutoInput: true</span>
<span class="org-nxml-text">Not In Tasker: true</span>
<span class="org-nxml-text">Separator: ,</span>
<span class="org-nxml-text">Check Millis: 1000</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">parameters</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%ailastbounds</span>
<span class="org-nxml-text">Last Bounds</span>
<span class="org-nxml-text">Bounds (left,top,right,bottom) of the item that the action last interacted with</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%ailastcoordinates</span>
<span class="org-nxml-text">Last Coordinates</span>
<span class="org-nxml-text">Center coordinates (x,y) of the item that the action last interacted with</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%err</span>
<span class="org-nxml-text">Error Code</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%errmsg</span>
<span class="org-nxml-text">Error Message</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/StringArray</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">parameters plugininstanceid plugintypeid </span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">parameters</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">{"_action":"click(point,564\\,1045)","_additionalOptions":{"checkMs":"1000","separator":",","withCoordinates":false},"_whenToPerformAction":{"notInAutoInput":true,"notInTasker":true},"generatedValues":{}}</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">parameters</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">parameters-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">parameters-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">b46b8afc-c840-40ad-9283-3946c57a1018</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput.intent.IntentActionv2</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Vals</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Bundle</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput.activity.ActivityConfigActionv2</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"60"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Task</span><span class="org-nxml-tag-delimiter">&gt;</span>
<span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TaskerData</span><span class="org-nxml-tag-delimiter">&gt;</span>
</pre>
</div>



</details>

<p>
I can use "Hey Google, read aloud" to read a
webpage. I can use "Hey Google, skip ahead 2
minutes" or "Hey Google, rewind 30 seconds." Not
sure how I can navigate by text, though. It would
be nice to get an overview of headings and then
jump to the one I want, or search for text and
continue from there.
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-autoplay-an-emacs-tv-video" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-autoplay-an-emacs-tv-video">Autoplay an emacs.tv video</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-autoplay-an-emacs-tv-video">
<p>
I wanted to be able to play random <a href="https://emacs.tv">emacs.tv</a> videos
without needing to touch my phone. I added
autoplay support to the web interface so that you
can open <a href="https://emacs.tv?autoplay=1">https://emacs.tv?autoplay=1</a> and have it
autoplay videos when you select the next random
one by clicking on the site logo, "Lucky pick", or
the dice icon. The first video doesn't autoplay
because <a href="https://stackoverflow.com/questions/40685142/youtube-autoplay-does-not-work-with-iframe">YouTube requires user interaction in order
to autoplay unmuted videos</a>, but I can work around
that with a Tasker script that loads the URL,
waits a few seconds, and clicks on the heading with AutoInput.
</p>

<p>
<a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/Emacs%20TV.tsk.xml">Emacs TV.tsk.xml</a> - <a href="https://taskernet.com/shares/?user=AS35m8m%2BZ2P26xJtN1KnE37qxZgYPI9oNna95WRet8GZZ%2FlpPBB0ZwV39gUgnHnlCKWBSA%3D%3D&amp;id=Task%3AEmacs+TV">Import via Taskernet</a>
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Emacs TV.tsk.xml</strong></summary>

<div class="org-src-container">
<pre class="src src-nxml"><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TaskerData</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">""</span> <span class="org-nxml-attribute-local-name">dvi</span>=<span class="org-string">"1"</span> <span class="org-nxml-attribute-local-name">tv</span>=<span class="org-string">"6.3.13"</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Task</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"task18"</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737558964554</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737562488128</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">18</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Emacs TV</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1000</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Share</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"Share"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Play random Emacs video</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Watch</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Share</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">104</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">https://emacs.tv?autoplay=1</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">App</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">30</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">107361459</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Bundle</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Vals</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"val"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">EnableDisableAccessibilityService-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Password</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Password</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Password-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Password-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Actions To Perform: click(point,229\,417)</span>
<span class="org-nxml-text">Not In AutoInput: true</span>
<span class="org-nxml-text">Not In Tasker: true</span>
<span class="org-nxml-text">Separator: ,</span>
<span class="org-nxml-text">Check Millis: 1000</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">parameters</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.JSON_ENCODED_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%ailastbounds</span>
<span class="org-nxml-text">Last Bounds</span>
<span class="org-nxml-text">Bounds (left,top,right,bottom) of the item that the action last interacted with</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%ailastcoordinates</span>
<span class="org-nxml-text">Last Coordinates</span>
<span class="org-nxml-text">Center coordinates (x,y) of the item that the action last interacted with</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%err</span>
<span class="org-nxml-text">Error Code</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%errmsg</span>
<span class="org-nxml-text">Error Message</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/StringArray</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">parameters plugininstanceid plugintypeid </span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">parameters</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">{"_action":"click(point,229\\,417)","_additionalOptions":{"checkMs":"1000","separator":",","withCoordinates":false},"_whenToPerformAction":{"notInAutoInput":true,"notInTasker":true},"generatedValues":{}}</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">parameters</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">parameters-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">parameters-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">45ce7a83-47e5-48fb-8c3e-20655e668353</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput.intent.IntentActionv2</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Vals</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Bundle</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autoinput.activity.ActivityConfigActionv2</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"60"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Task</span><span class="org-nxml-tag-delimiter">&gt;</span>
<span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TaskerData</span><span class="org-nxml-tag-delimiter">&gt;</span>
</pre>
</div>



</details>

<p>
Then I set up a Google Assistant routine with the
triggers "teach me" or "Emacs TV" and the action
"run Emacs TV in Tasker. Now I can say "Hey
Google, teach me" and it'll play a random Emacs
video for me. I can repeat "Hey Google, teach me"
to get a different video, and I can pause with
"Hey Google, pause video".
</p>

<p>
This was actually my second approach. The first
time I tried to implement this, I thought about
using Voice Access to interact with the buttons.
Strangely, I couldn't get Voice Access to click on
the header links or the buttons even when I had
<code>aria-label</code>, <code>role="button"</code>, and <code>tabindex</code>
attributes set on them. As a hacky workaround, I
made the site logo pick a new random video when
clicked, so I can at least use it as a large touch
target when I use "display grid" in Voice Access.
("Tap 5" will load the next video.)
</p>

<p>
There doesn't seem to be a way to add custom voice
access commands to a webpage in a way that hooks
into <a href="https://support.google.com/accessibility/android/answer/6151848?hl=en">Android Voice Access</a> and <a href="https://support.apple.com/en-ca/guide/iphone/iph2c21a3c88/ios">iOS Voice Control</a>,
but maybe I'm just missing something obvious when
it comes to ARIA attributes.
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-open-my-org-agenda-and-scroll-through-it" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-open-my-org-agenda-and-scroll-through-it">Open my Org agenda and scroll through it</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-open-my-org-agenda-and-scroll-through-it">
<p>
There were some words that I couldn't get Google
Assistant or Voice Access to understand, like
"open <a href="https://www.orgzlyrevived.com/">Orgzly Revived</a>". Fortunately, "Open Revived"
worked just fine.
</p>

<p>
I wanted to be able to see my Org Agenda. After
some fiddling around (see the resources in this
section), I figured out this <a href="https://forum.joaoapps.com/index.php?resources/creating-autoshare-commands-for-your-share-menus-a-detailed-tutorial.335/">AutoShare</a> intent that
runs an agenda search:
</p>

<p>
<a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/orgzly-revived-search.intent">orgzly-revived-search.intent</a>
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>orgzly-revived-search.intent</strong></summary>

<div class="org-src-container">
<pre class="src src-js">{
  <span class="org-string">"target"</span>: <span class="org-string">"Activity"</span>,
  <span class="org-string">"appname"</span>: <span class="org-string">"Orgzly Revived"</span>,
  <span class="org-string">"action"</span>: <span class="org-string">"android.intent.action.MAIN"</span>,
  <span class="org-string">"package"</span>: <span class="org-string">"com.orgzlyrevived"</span>,
  <span class="org-string">"class"</span>: <span class="org-string">"com.orgzly.android.ui.main.MainActivity"</span>,
  <span class="org-string">"extras"</span>: [
    {
      <span class="org-string">"type"</span>: <span class="org-string">"String"</span>,
      <span class="org-string">"key"</span>: <span class="org-string">"com.orgzly.intent.extra.QUERY_STRING"</span>,
      <span class="org-string">"name"</span>: <span class="org-string">"Query"</span>
    }
  ],
  <span class="org-string">"name"</span>: <span class="org-string">"Search"</span>,
  <span class="org-string">"id"</span>: <span class="org-string">"Orgzly-search"</span>
}
</pre>
</div>



</details>

<p>
Then I defined a Tasker task called "Search Orgzly Revived":
</p>

<p>
<a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/Search%20Orgzly%20Revived.tsk.xml">Download Search Orgzly Revived.tsk.xml</a>
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Search Orgzly Revived.tsk.xml</strong></summary>

<div class="org-src-container">
<pre class="src src-xml"><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TaskerData</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">""</span> <span class="org-nxml-attribute-local-name">dvi</span>=<span class="org-string">"1"</span> <span class="org-nxml-attribute-local-name">tv</span>=<span class="org-string">"6.3.13"</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Task</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"task16"</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1676823952566</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737567565538</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">16</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Search Orgzly Revived</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">100</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Share</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"Share"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Search Orgzly Revived</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Work,Well-Being</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Share</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">18</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">App</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">appClass</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.orgzly.android.ui.LauncherActivity</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">appClass</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">appPkg</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.orgzlyrevived</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">appPkg</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">label</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Orgzly Revived</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">label</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">App</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">547</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%extra</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.orgzly.intent.extra.QUERY_STRING:%par1</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">877</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">android.intent.action.MAIN</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%extra</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg7"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.orgzlyrevived</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg8"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.orgzly.android.ui.main.MainActivity</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg9"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Img</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"icn"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"2"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">mw_action_today</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Img</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Task</span><span class="org-nxml-tag-delimiter">&gt;</span>
<span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TaskerData</span><span class="org-nxml-tag-delimiter">&gt;</span>
</pre>
</div>



</details>

<p>
I made a Google Assistant routine that uses "show
my agenda" as the trigger and "run search orgzly
revived in Tasker" as the action. After a quick
"Hey Google, show my agenda; Hey Google, voice
access", I can use "scroll down" to page through
the list. "Back" gets me to the list of notebooks,
and "inbox" opens my inbox.
</p>

<p>
Resources:
</p>
<ul class="org-ul">
<li><a href="https://blog.kemonine.info/blog/2023-02-17-android-org-agenda/">Android org-agenda</a></li>
<li><a href="https://www.reddit.com/r/tasker/comments/kjfry7/intents_are_baffling_me/">this Termux call</a></li>
<li><a href="https://srijan.ch/triggering-orgzly-sync-on-android-when-org-file-changes">the recent post on syncing</a></li>
</ul>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-add-and-open-notes-in-orgzly-revived" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-add-and-open-notes-in-orgzly-revived">Add and open notes in Orgzly Revived</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-add-and-open-notes-in-orgzly-revived">
<p>
When I'm looking at an Orgzly Revived notebook
with Voice Access turned on, "plus" starts a new
note. Anything that isn't a label gets typed, so I
can just start saying the title of my note (or use
"type &#x2026;"). If I want to add the content, I have
to use "hide keyboard", "tap content", and then
"type &#x2026;"). "Tap scheduled time; Tomorrow" works
if the scheduled time widget is visible, so I just
need to use "scroll down" if the title is long.
"Tap done; one" saves it.
</p>

<p>
Adding a note could be simpler - maybe a Tasker
task that prompts me for text and adds it. I could
use Tasker to prepend to my Inbox.org and then
reload it in Orgzly. It would be more elegant to
figure out the intent for adding a note, though.
Maybe in the <a href="https://github.com/orgzly-revived/documentation/blob/master/android/public-receiver.org">Orgzly Android intent receiver
documentation</a>?
</p>

<p>
When I'm looking at the Orgzly notebook and I say
part of the text in a note without a link, it
opens the note. If the note has a link, it seems
to open the link directly. Tapping by numbers also
goes to the link, but tapping by grid opens the
note.
</p>

<p>
I'd love to speech-enable this someday so that I
can hear Orgzly Revived step through my agenda and
use my voice to mark things as cancelled/done,
schedule them for today/tomorrow/next week, or add
extra notes to the body.
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-add-items-to-ourgroceries" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-add-items-to-ourgroceries">Add items to OurGroceries</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-add-items-to-ourgroceries">
<p>
W+ and I use the <a href="https://www.ourgroceries.com/overview">OurGroceries app</a>. As it turns
out, "<a href="https://www.ourgroceries.com/faq#voice_commands_changing">Hey Google, ask OurGroceries to add milk</a>"
still works. Also, Voice Access works fine with
OurGroceries. I can say "Plus", dictate an item,
and tap "Add." I configured the cross-off action
to be swipes instead of taps to minimize
accidental crossing-off at the store, so I can say
"swipe right on apples" to mark that as done.
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-track-time" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-track-time">Track time</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-track-time">
<p>
I added a Tasker task to update my personal
time-tracking system, and I added some Google
Assistant routines for common categories like
writing or routines. I can also use "run track
with {category} in Tasker" to track a less-common
category. The kiddo likes to get picked up and
hugged a lot, so I added a "Hey Google, koala
time" routine to clock into childcare in a more
fun way. I have to enunciate that one clearly or
it'll get turned into "Call into &#x2026;", which
doesn't work.
</p>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-toggle-recording" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-toggle-recording">Toggle recording</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-toggle-recording">
<p>
Since I was tinkering around with Tasker a lot, I
decided to try moving my voice recording into it.
I want to save timestamped recordings into my
<code>~/sync/recordings</code> directory so that they're
automatically synchronized with Syncthing, and
then they can feed into my WhisperX workflow. This
feels a little more responsive and reliable than
<a href="https://github.com/FossifyOrg/Voice-Recorder/">Fossify Voice Recorder</a>, actually, since that one
tended to become unresponsive from time to time.
</p>

<p>
<a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/Toggle%20Recording.tsk.xml">Download Toggle Recording.tsk.xml</a> - <a href="https://taskernet.com/shares/?user=AS35m8m%2BZ2P26xJtN1KnE37qxZgYPI9oNna95WRet8GZZ%2FlpPBB0ZwV39gUgnHnlCKWBSA%3D%3D&amp;id=Task%3AToggle+Recording">Import via Taskernet</a>
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Toggle Recording.tsk.xml</strong></summary>

<div class="org-src-container">
<pre class="src src-xml"><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TaskerData</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">""</span> <span class="org-nxml-attribute-local-name">dvi</span>=<span class="org-string">"1"</span> <span class="org-nxml-attribute-local-name">tv</span>=<span class="org-string">"6.3.13"</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Task</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"task12"</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1737504717303</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">cdate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1738272248919</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">edate</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">12</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">id</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Toggle Recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">nme</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">100</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">pri</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Share</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"Share"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">b</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Toggle recording on and off; save timestamped file to sync/recordings</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">d</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Sound</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">g</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">p</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">t</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Share</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">37</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ConditionList</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"if"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Condition</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"c0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">lhs</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%RECORDING</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">lhs</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">op</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">12</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">op</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">rhs</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">rhs</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Condition</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ConditionList</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">549</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%RECORDING</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act10"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">166160670</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Bundle</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Vals</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"val"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString1</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString1</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString1-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString1-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString2</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString2</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString2-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString2-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString3</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString3</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString3-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString3-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString4</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString4</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString4-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString4-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString5</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString5</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ActionIconString5-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ActionIconString5-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">AppendTexts</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">AppendTexts</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">AppendTexts-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">AppendTexts-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">BackgroundColor</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">BackgroundColor</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">BackgroundColor-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">BackgroundColor-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">BadgeType</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">BadgeType</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">BadgeType-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">BadgeType-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button1UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button1UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button1UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button1UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button2UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button2UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button2UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button2UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button3UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button3UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button3UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button3UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button4UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button4UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button4UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button4UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button5UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button5UnlockScreen</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Button5UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Button5UnlockScreen-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ChronometerCountDown</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ChronometerCountDown</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ChronometerCountDown-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ChronometerCountDown-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Colorize</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Colorize</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Colorize-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Colorize-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">DismissOnTouchVariable</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">DismissOnTouchVariable</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">DismissOnTouchVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">DismissOnTouchVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExtraInfo</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExtraInfo</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExtraInfo-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExtraInfo-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">GroupAlertBehaviour</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">GroupAlertBehaviour</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">GroupAlertBehaviour-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">GroupAlertBehaviour-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">GroupKey</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">GroupKey</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">GroupKey-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">GroupKey-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IconExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IconExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IconExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IconExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IsGroupSummary</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IsGroupSummary</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IsGroupSummary-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IsGroupSummary-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IsGroupVariable</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IsGroupVariable</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">IsGroupVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">IsGroupVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaAlbum</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaAlbum</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaAlbum-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaAlbum-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaArtist</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaArtist</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaArtist-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaArtist-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaDuration</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaDuration</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaDuration-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaDuration-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaIcon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaIcon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaIcon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaIcon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaLayout</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaLayout</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaLayout-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaLayout-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaNextCommand</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaNextCommand</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaNextCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaNextCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPauseCommand</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPauseCommand</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPauseCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPauseCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPlayCommand</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPlayCommand</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPlayCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPlayCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPlaybackState</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPlaybackState</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPlaybackState-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPlaybackState-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPosition</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPosition</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPosition-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPosition-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPreviousCommand</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPreviousCommand</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaPreviousCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaPreviousCommand-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaTrack</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaTrack</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MediaTrack-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MediaTrack-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingImages</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingImages</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingImages-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingImages-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingOwnIcon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingOwnIcon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingOwnIcon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingOwnIcon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingOwnName</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingOwnName</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingOwnName-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingOwnName-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonBot</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonBot</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonBot-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonBot-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonIcons</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonIcons</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonIcons-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonIcons-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonImportant</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonImportant</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonImportant-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonImportant-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonNames</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonNames</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonNames-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonNames-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonUri</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonUri</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingPersonUri-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingPersonUri-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingSeparator</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingSeparator</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingSeparator-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingSeparator-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingTexts</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingTexts</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">MessagingTexts-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">MessagingTexts-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelBypassDnd</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelBypassDnd</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelBypassDnd-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelBypassDnd-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelDescription</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelDescription</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelDescription-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelDescription-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelId</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelId</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelId-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelId-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelImportance</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelImportance</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelImportance-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelImportance-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelName</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelName</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelName-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelName-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelShowBadge</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelShowBadge</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">NotificationChannelShowBadge-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">NotificationChannelShowBadge-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PersistentVariable</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PersistentVariable</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PersistentVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PersistentVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PhoneOnly</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PhoneOnly</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PhoneOnly-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PhoneOnly-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PriorityVariable</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PriorityVariable</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PriorityVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PriorityVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PublicVersion</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PublicVersion</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PublicVersion-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PublicVersion-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyAction</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyAction</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyAction-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyAction-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyChoices</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyChoices</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyChoices-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyChoices-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyLabel</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyLabel</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ReplyLabel-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ReplyLabel-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ShareButtonsVariable</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ShareButtonsVariable</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ShareButtonsVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ShareButtonsVariable-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">SkipPictureCache</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">SkipPictureCache</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">SkipPictureCache-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">SkipPictureCache-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">SoundPath</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">SoundPath</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">SoundPath-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">SoundPath-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">StatusBarIconString</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">StatusBarIconString</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">StatusBarIconString-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">StatusBarIconString-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">StatusBarTextSize</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">16</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">StatusBarTextSize</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">StatusBarTextSize-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">StatusBarTextSize-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TextExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TextExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TextExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TextExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Time</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Time</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Time-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Time-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TimeFormat</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TimeFormat</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TimeFormat-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TimeFormat-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Timeout</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Timeout</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Timeout-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Timeout-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TitleExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TitleExpanded</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">TitleExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TitleExpanded-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UpdateNotification</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UpdateNotification</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UpdateNotification-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UpdateNotification-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UseChronometer</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UseChronometer</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UseChronometer-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UseChronometer-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UseHTML</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UseHTML</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">UseHTML-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">UseHTML-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Visibility</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Visibility</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Visibility-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Visibility-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Title: my recording</span>
<span class="org-nxml-text">Action on Touch: stop recording</span>
<span class="org-nxml-text">Status Bar Text Size: 16</span>
<span class="org-nxml-text">Id: my-recording</span>
<span class="org-nxml-text">Dismiss on Touch: true</span>
<span class="org-nxml-text">Priority: -1</span>
<span class="org-nxml-text">Separator: ,</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_1_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_1_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_1_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_1_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_2_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_2_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_2_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_2_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_3_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_3_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_3_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_3_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_4_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_4_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_4_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_4_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_5_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_5_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_action_5_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_action_5_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">stop recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button1</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button1</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button1-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button1-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button2</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button2</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button2-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button2-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button3</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button3</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button3-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button3-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button4</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button4</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button4-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button4-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button5</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button5</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_button5-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_button5-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label1</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label1</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label1-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label1-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label2</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label2</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label2-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label2-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label3</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label3</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_label3-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_label3-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_on_dismiss</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_on_dismiss</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_on_dismiss-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_on_dismiss-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_share</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_share</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_action_share-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_action_share-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_command</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_command</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_command-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_command-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_content_info</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_content_info</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_content_info-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_content_info-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_dismiss_on_touch</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_dismiss_on_touch</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_dismiss_on_touch-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_dismiss_on_touch-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_indeterminate_progress</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_indeterminate_progress</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_indeterminate_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_indeterminate_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_color</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_color</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_color-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_color-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_off</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_off</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_off-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_off-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_on</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_on</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_led_on-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_led_on-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_max_progress</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_max_progress</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_max_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_max_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_number</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_number</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_number-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_number-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_persistent</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_persistent</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_persistent-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_persistent-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_picture</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_picture</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_picture-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_picture-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_priority</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">-1</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_priority</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_priority-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_priority-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_progress</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_progress</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_progress-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_subtext</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_subtext</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_subtext-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_subtext-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_text</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_text</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_text-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_text-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_ticker</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_ticker</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_ticker-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_ticker-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_title</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">my recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_title</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_title-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_title-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_url</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_url</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_url-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_url-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_vibration</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_vibration</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_notification_vibration-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_notification_vibration-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_status_bar_icon</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_status_bar_icon</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">config_status_bar_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">config_status_bar_icon-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%err</span>
<span class="org-nxml-text">Error Code</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%errmsg</span>
<span class="org-nxml-text">Error Message</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/StringArray</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">StatusBarTextSize config_notification_title config_notification_action notificaitionid config_notification_priority plugininstanceid plugintypeid </span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">my-recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionsound</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionsound</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionsound-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionsound-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">9fca7d3a-cca6-4bfb-8ec4-a991054350c5</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification.intent.IntentNotification</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Vals</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Bundle</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification.activity.ActivityConfigNotify</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act11"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">559</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Go</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">default:default</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"5"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"5"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg7"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act12"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">455</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">sync/recordings/%filename</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act13"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">38</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">657</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act3"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">559</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Done</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">default:default</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"5"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"5"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg7"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act4"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">2046367074</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Bundle</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Vals</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"val"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">App</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">App</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">App-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">App-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CancelAll</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CancelAll</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CancelAll-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CancelAll-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CancelPersistent</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CancelPersistent</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CancelPersistent-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CancelPersistent-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveApp</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveApp</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitivePackage</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitivePackage</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitivePackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitivePackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveText</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveText</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveText-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveText-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveTitle</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveTitle</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">CaseinsensitiveTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">CaseinsensitiveTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactApp</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactApp</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactPackage</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactPackage</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactText</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactText</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactText-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactText-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactTitle</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactTitle</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">ExactTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">ExactTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InterceptApps</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""/</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InterceptApps</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InterceptApps-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InterceptApps-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertApp</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertApp</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertPackage</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertPackage</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertText</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertText</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertText-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertText-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertTitle</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertTitle</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">InvertTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">InvertTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherId</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherId</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherId-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherId-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherPackage</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherPackage</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherTag</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherTag</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">OtherTag-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">OtherTag-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PackageName</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PackageName</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">PackageName-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">PackageName-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexApp</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexApp</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexApp-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexPackage</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexPackage</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexPackage-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexText</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexText</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexText-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexText-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexTitle</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">false</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexTitle</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">RegexTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">RegexTitle-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Text</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Text</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Text-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Text-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Title</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">null</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Title</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Title-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Title-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">Id: my-recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">com.twofortyfouram.locale.intent.extra.BLURB-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%err</span>
<span class="org-nxml-text">Error Code</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%errmsg</span>
<span class="org-nxml-text">Error Message</span>
<span class="org-nxml-text">Only available if you select </span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt;Continue Task After Error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">lt;/b</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">amp</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">gt; and the action ends in error</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/StringArray</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">notificaitionid plugininstanceid plugintypeid </span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">true</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.Boolean</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.subbundled-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">my-recording</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">notificaitionid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">notificaitionid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">da51b00c-7f2a-483d-864c-7fee8ac384aa</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugininstanceid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification.intent.IntentCancelNotification</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">java.lang.String</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">plugintypeid-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Vals</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Bundle</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">com.joaomgcd.autonotification.activity.ActivityConfigCancelNotification</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act5"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">43</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act6"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">394</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Bundle</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Vals</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"val"</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">StringArray sr=""</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%current_time</span>
<span class="org-nxml-text">00. Current time</span>
<span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%dt_millis</span>
<span class="org-nxml-text">1. MilliSeconds</span>
<span class="org-nxml-text">Milliseconds Since Epoch</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%dt_seconds</span>
<span class="org-nxml-text">2. Seconds</span>
<span class="org-nxml-text">Seconds Since Epoch</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%dt_day_of_month</span>
<span class="org-nxml-text">3. Day Of Month</span>
<span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%dt_month_of_year</span>
<span class="org-nxml-text">4. Month Of Year</span>
<span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">%dt_year</span>
<span class="org-nxml-text">5. Year</span>
<span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">lt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-text">/StringArray</span><span class="org-nxml-entity-ref-delimiter">&amp;</span><span class="org-nxml-entity-ref-name">gt</span><span class="org-nxml-entity-ref-delimiter">;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES</span><span class="org-nxml-tag-delimiter">&gt;</span>
          <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">[Ljava.lang.String;</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">net.dinglisch.android.tasker.RELEVANT_VARIABLES-type</span><span class="org-nxml-tag-delimiter">&gt;</span>
        <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Vals</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Bundle</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg10"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg11"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg12"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">yyyy_MM_dd_HH_mm_ss</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg7"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">current_time</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg8"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg9"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act7"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">547</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%filename</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%current_time.mp4</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act8"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">547</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%RECORDING</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">1</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Action</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"act9"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"7"</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">548</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">code</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg0"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-delimiter">&gt;</span><span class="org-nxml-text">%filename</span><span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Str</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg1"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg10"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg11"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg12"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg13"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg14"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg15"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg2"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"0"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg3"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg4"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg5"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg6"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg7"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Str</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg8"</span> <span class="org-nxml-attribute-local-name">ve</span>=<span class="org-string">"3"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
      <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-element-local-name">Int</span> <span class="org-nxml-attribute-local-name">sr</span>=<span class="org-string">"arg9"</span> <span class="org-nxml-attribute-local-name">val</span>=<span class="org-string">"1"</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-tag-delimiter">&gt;</span>
    <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Action</span><span class="org-nxml-tag-delimiter">&gt;</span>
  <span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">Task</span><span class="org-nxml-tag-delimiter">&gt;</span>
<span class="org-nxml-tag-delimiter">&lt;</span><span class="org-nxml-tag-slash">/</span><span class="org-nxml-element-local-name">TaskerData</span><span class="org-nxml-tag-delimiter">&gt;</span>
</pre>
</div>



</details>
</div>
</div>
<div id="outline-container-controlling-my-android-phone-by-voice-overall-next-steps" class="outline-2">
<h3 id="controlling-my-android-phone-by-voice-overall-next-steps">Overall, next steps</h3>
<div class="outline-text-2" id="text-controlling-my-android-phone-by-voice-overall-next-steps">
<p>
It looks like there are plenty of things I can do
by voice. If I can talk, then I can record a
braindump. If I can't talk but I can listen to
things, then Emacs TV might be a good choice. If I
want to read, I can read webpages or e-books. If
my hands are busy, I can still add items to my
grocery list or my Orgzly notebook. I just need to practice.
</p>

<p>
I can experiment with ARIA labels or Web Speech
API interfaces on a simpler website, since
emacs.tv is a bit complicated. If that doesn't let
me do the speech interfaces I'm thinking of, then
I might need to look into making a simple Android
app.
</p>

<p>
I'd like to learn more about Orgzly Revived
intents. At some point, I should probably learn
more about Android programming too. There are a
bunch of tweaks I might like to make to Orgzly
Revived and the Emacs port of Android.
</p>

<p>
Also somewhat tempted by the idea of adding voice
control or voice input to Emacs and/or Linux. If
I'm on my computer already, I can usually just
type, but it might be handy for using it
hands-free while I'm in the kitchen. Besides, exploring
accessibility early will also probably pay off
when it comes to age-related changes. There's the
<a href="https://simonsafar.com/2024/whisper/">ffmpeg+Whisper approach</a>, there's a more
sophisticated <a href="https://lepisma.xyz/2024/09/12/emacs-dictation-mode/index.html">dictation mode with a voice cursor</a>,
there are some tools for <a href="https://github.com/jcaw/voicemacs">Emacs tools</a> for working
with <a href="https://talonvoice.com/">Talon</a> or <a href="https://github.com/dictation-toolbox/dragonfly">Dragonfly</a>&#x2026; There's been a lot of
work in this area, so I might be able to find
something that fits.
</p>

<p>
Promising!</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2025/01/controlling-my-android-phone-by-voice/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2025%2F01%2Fcontrolling-my-android-phone-by-voice%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Updating my audio braindump workflow to take advantage of WhisperX</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2024/11/updating-my-audio-braindump-workflow-to-take-advantage-of-whisperx/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2024-11-19T13:33:59Z</updated>
    <published>2024-11-19T13:33:59Z</published>
    <category term="speech" />
<category term="emacs" />
<category term="speechtotext" />
<category term="org" />
		<id>https://sachachua.com/blog/2024/11/updating-my-audio-braindump-workflow-to-take-advantage-of-whisperx/</id>
		<content type="html"><![CDATA[<p>
I get word timestamps for free when I transcribe
with <a href="https://github.com/m-bain/whisperX">WhisperX</a>, so I can skip the Aeneas alignment
step. That means I can update my <a href="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/">previous code for
handling audio braindumps</a> . Breaking the transcript up into sections  Also, I recently
updated <a href="https://github.com/sachac/subed/blob/main/subed/subed-word-data.el">subed-word-data</a> to <a href="https://sachachua.com/blog/2024/11/yay-emacs-7-using-word-timing-in-caption-editing-with-subed-word-data/">colour words based on
their transcription score</a>, which draws my
attention to things that might be uncertain.
</p>

<p>
Here's what it looks like when I have the post,
the transcript, and the annotated PDF.
</p>


<figure id="orgbe95f63">
<a href="https://sachachua.com/blog/2024/11/updating-my-audio-braindump-workflow-to-take-advantage-of-whisperx/2024-11-17_20-44-30.png"><img src="https://sachachua.com/blog/2024/11/updating-my-audio-braindump-workflow-to-take-advantage-of-whisperx/2024-11-17_20-44-30.png" alt="2024-11-17_20-44-30.png"></a>

<figcaption><span class="figure-number">Figure 1: </span>Screenshot of draft, transcript, and PDF</figcaption>
</figure>

<p>
Here's what I needed to implement <code>my-audio-braindump-from-whisperx-json</code> (plus some code from  <a href="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/">my previous audio braindump workflow</a>):
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisperx-word-list</span> (file)
  (<span class="org-keyword">let*</span> ((json-object-type <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">alist</span>)
         (json-array-type <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">list</span>))
    (seq-mapcat (<span class="org-keyword">lambda</span> (seg)
                  (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">words</span> seg))
                (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">segments</span> (json-read-file file)))))

<span class="org-comment-delimiter">;; </span><span class="org-comment">(seq-take (my-whisperx-word-list (my-latest-file "~/sync/recordings" "\\.json")) 10)</span>
(<span class="org-keyword">defun</span> <span class="org-function-name">my-whisperx-insert-word-list</span> (words)
  <span class="org-doc">"Inserts WORDS with text properties."</span>
  (<span class="org-keyword">require</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">subed-word-data</span>)
  (mapc (<span class="org-keyword">lambda</span> (word)
            (<span class="org-keyword">let</span> ((start (point)))
              (insert
               (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">word</span> word))
              (subed-word-data&#45;&#45;add-word-properties start (point) word)
              (insert <span class="org-string">" "</span>)))
        words))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-audio-braindump-turn-sections-into-headings</span> ()
  (<span class="org-keyword">interactive</span>)
  (goto-char (point-min))
  (<span class="org-keyword">while</span> (re-search-forward <span class="org-string">"START SECTION </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"> STOP SECTION"</span> nil t)
    (replace-match
     (<span class="org-keyword">save-match-data</span>
       (format
        <span class="org-string">"\n*** %s\n"</span>
        (<span class="org-keyword">save-match-data</span> (string-trim (replace-regexp-in-string <span class="org-string">"^[,\\.]</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">[,\\.]$"</span> <span class="org-string">""</span> (match-string 1))))))
     nil t)
    (<span class="org-keyword">let</span> ((prop-match (<span class="org-keyword">save-excursion</span> (text-property-search-forward <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">subed-word-data-start</span>))))
      (<span class="org-keyword">when</span> prop-match
        (org-entry-put (point) <span class="org-string">"START"</span> (format-seconds <span class="org-string">"%02h:%02m:%02s"</span> (prop-match-value prop-match)))))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-audio-braindump-split-sentences</span> ()
  (<span class="org-keyword">interactive</span>)
  (goto-char (point-min))
  (<span class="org-keyword">while</span> (re-search-forward <span class="org-string">"[a-z]\\. "</span> nil t)
    (replace-match (concat (string-trim (match-string 0)) <span class="org-string">"\n"</span>) )))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-audio-braindump-restructure</span> ()
  (<span class="org-keyword">interactive</span>)
  (goto-char (point-min))
  (my-subed-fix-common-errors)
  (org-mode)
  (my-audio-braindump-prepare-alignment-breaks)
  (my-audio-braindump-turn-sections-into-headings)
  (my-audio-braindump-split-sentences)
  (goto-char (point-min))
  (my-remove-filler-words-at-start))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-audio-braindump-from-whisperx-json</span> (file)
  (<span class="org-keyword">interactive</span> (list (read-file-name <span class="org-string">"JSON: "</span> <span class="org-string">"~/sync/recordings/"</span> nil nil nil (<span class="org-keyword">lambda</span> (f) (string-match <span class="org-string">"\\.json\\'"</span> f)))))
  <span class="org-comment-delimiter">;; </span><span class="org-comment">put them all into a buffer</span>
  (<span class="org-keyword">with-current-buffer</span> (get-buffer-create <span class="org-string">"*Words*"</span>)
    (erase-buffer)
    (fundamental-mode)
    (my-whisperx-insert-word-list (my-whisperx-word-list file))
    (my-audio-braindump-restructure)
    (goto-char (point-min))
    (switch-to-buffer (current-buffer))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-audio-braindump-process-text</span> (file)
  (<span class="org-keyword">interactive</span> (list (read-file-name <span class="org-string">"Text: "</span> <span class="org-string">"~/sync/recordings/"</span> nil nil nil (<span class="org-keyword">lambda</span> (f) (string-match <span class="org-string">"\\.txt\\'"</span> f)))))
  (<span class="org-keyword">with-current-buffer</span> (find-file-noselect file)
    (my-audio-braindump-restructure)
    (save-buffer)))
<span class="org-comment-delimiter">;; </span><span class="org-comment">(my-audio-braindump-from-whisperx-json (my-latest-file "~/sync/recordings" "\\.json"))</span>
</pre>
</div>


<p>
Ideas for next steps:
</p>

<ul class="org-ul">
<li>I can change my processing script to split up the Whisper TXT into sections and automatically make the PDF with nice sections.</li>
<li>I can add reminders and other callouts. I can style them, and I can copy reminders into a different section for easier processing.</li>
<li>I can look into extracting PDF annotations so that I can jump to the next highlight or copy highlighted text.</li>
</ul>

<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#writing-and-editing">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2024/11/updating-my-audio-braindump-workflow-to-take-advantage-of-whisperx/index.org">View org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2024%2F11%2Fupdating-my-audio-braindump-workflow-to-take-advantage-of-whisperx%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Yay, I can get live speech recognition results from Emacs to Etherpad</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2023/12/yay-i-can-get-live-speech-recognition-results-from-emacs-to-etherpad/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2023-12-26T15:02:47Z</updated>
    <published>2023-12-26T15:02:47Z</published>
    <category term="speechtotext" />
<category term="emacs" />
<category term="speech" />
		<id>https://sachachua.com/blog/2023/12/yay-i-can-get-live-speech-recognition-results-from-emacs-to-etherpad/</id>
		<content type="html"><![CDATA[<p>
I want to see if we can caption <a href="https://emacsconf.org">EmacsConf</a> live presentations and Q&amp;A
sessions, even if the automated captions need help with misrecognized
words. Now that I can <a href="https://sachachua.com/blog/2023/12/live-speech-with-deepgram/">get live speech into Emacs using the Deepgram
streaming API</a>, I can process that information and send it to other
places. Here's a quick demonstration of appending live speech captions
to Etherpad:
</p>

<p>
<video controls=""><source src="https://sachachua.com/blog/2023/12/yay-i-can-get-live-speech-recognition-results-from-emacs-to-etherpad/2023-12-26_09.29.03.webm" type="video/webm"><a href="https://sachachua.com/blog/2023/12/yay-i-can-get-live-speech-recognition-results-from-emacs-to-etherpad/2023-12-26_09.29.03.webm">Download the video</a></video>
</p>

<p>
I added an <code>emacsconf-pad-append-text</code> function to
<a href="https://git.emacsconf.org/emacsconf-el/tree/emacsconf-pad.el">emacsconf-pad.el</a> that uses the <code>appendText</code> function.
</p>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2023%2F12%2Fyay-i-can-get-live-speech-recognition-results-from-emacs-to-etherpad%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Audio braindump workflow tweaks: Adding Org Mode hyperlinks to recordings based on keywords</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2023-12-22T21:47:57Z</updated>
    <published>2023-12-22T21:47:57Z</published>
    <category term="speech" />
<category term="speechtotext" />
<category term="emacs" />
		<id>https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/</id>
		<content type="html"><![CDATA[<div class="update" id="orgdbf2147">
<p>
<span class="timestamp-wrapper"><span class="timestamp">[2023-12-24 Sun] </span></span> Added a quick video!
</p>

</div>

<p>
<video controls=""><source src="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/2023-12-22-audio-workflow.webm" type="video/webm"><a href="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/2023-12-22-audio-workflow.webm">Download the video</a></video>
</p>

<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Summary sketch</strong></summary>
<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/2023-12-15-01%20Audio%20braindump%20workflow%20tweaks%20%23emacs%20%23orgmode%20%23subed.png" data-src="https://sketches.sachachua.com/static/2023-12-15-01%20Audio%20braindump%20workflow%20tweaks%20%23emacs%20%23orgmode%20%23subed.png" data-title="2023-12-15-01 Audio braindump workflow tweaks #emacs #orgmode #subed.png" data-w="3744" data-h="2808"><picture>
      <img src="https://sketches.sachachua.com/static/2023-12-15-01%20Audio%20braindump%20workflow%20tweaks%20%23emacs%20%23orgmode%20%23subed.png" width="3744" height="2808" alt="2023-12-15-01 Audio braindump workflow tweaks #emacs #orgmode #subed.png" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>2023-12-15-01 Audio braindump workflow tweaks #emacs #orgmode #subed.png</figcaption>
    </picture></a></div>
<p></p>


</details>

<p>
Audio recording is handy for capturing thoughts as I wait, walk around, or do chores. But my wireless earbuds don't have a good mic, I rarely got back to reviewing the wall of text, and I don't trust speech recognition to catch all my words.
</p>

<p>
Here's a new brain-dumping workflow that I've been experimenting with, though. I use a lapel mic to record in my phone. Google Recorder gives me an audio file as well as a rough transcript right away.
</p>

<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Animated GIF showing Google Recorder 's real-time transcript</strong></summary>

<figure id="org3a6a756">
<img src="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/braindump-recording.gif" alt="braindump-recording.gif" style="max-height:80vh">

</figure>


</details>

<p>
I copy those with Syncthing.
</p>

<p>
If I use keywords like "start" or "stop" along with things like "topic", "reminder", or "summary", then I can put those on separate lines automatically (<code>my-transcript-prepare-alignment-breaks</code>).
</p>

<pre class="example" id="org7e2d4eb">
...
News. Miscellaneous little tasks that he doing. I do want to
finish that blog post about the playlist Just so that it's out.
Something else that people can, you know, refer to or that I can refer
to. Uh, And at some point I want to think about, This second brain
stuff.
So, right now, What's my current state? Uh,
START CHAPTER second brain STOP CHAPTER
Right now, I dumped everything into originally. In my inbox, if I come
across an interesting website. As usually in my phone. So then I share
it. As. Something links at those or four none. Uh, into my inbox.
...
</pre>

<p>
I use <code>subed-align</code> to get the timestamps, and add the headings.
</p>


<div class="org-src-container">
<pre class="src src-subed-vtt"><span class="org-subed-time">00:20:18.680</span> <span class="org-subed-time-separator">&#45;&#45;&gt;</span> <span class="org-subed-time">00:20:24.679</span>
So, right now, What's my current state? Uh,

<span class="org-comment">NOTE CHAPTER: second brain</span>

<span class="org-subed-time">00:20:24.680</span> <span class="org-subed-time-separator">&#45;&#45;&gt;</span> <span class="org-subed-time">00:20:30.719</span>
START CHAPTER second brain STOP CHAPTER
</pre>
</div>


<p>
I can then create an Org Mode TODO item with a quick hyperlinked summary as well as my transcript.
</p>


<figure id="orge19c03f">
<img src="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/braindump-summary.svg" alt="braindump-summary.svg" class="org-svg" style="max-height:80vh">

<figcaption><span class="figure-number">Figure 1: </span>Summary with headings and links</figcaption>
</figure>

<p>
I can jump to the audio if there are misrecognized words.
</p>

<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Screenshot of jumping to the audio</strong></summary>

<figure id="org6501c7b">
<img src="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/braindump-vtt.png" alt="braindump-vtt.png" style="max-height:80vh">

<figcaption><span class="figure-number">Figure 2: </span>Following the link to the chapter in the VTT file</figcaption>
</figure>


</details>

<p>
I can use subed-waveform to tweak the start and end times. (<code>subed-waveform-show-current</code>, then left-clicking to set the start or right-clicking to set the end, or using keybindings to adjust the start/stop).
</p>

<p>
Someday I'll write code to send sections to a better speech
recognition engine or to AI. In the meantime, this is pretty good.
</p>

<p>
Here's how the code works:
</p>
<div id="outline-container-recognizing-keyword-phrases" class="outline-2">
<h3 id="recognizing-keyword-phrases">Recognizing keyword phrases</h3>
<div class="outline-text-2" id="text-recognizing-keyword-phrases">
<p>
There are several things I want to do while dictating.
</p>

<ul class="org-ul">
<li>I want to mark different topics so that it's easy to find the section where I was talking about something.</li>
<li>I might want to set tags or priorities, or even schedule something (today, tomorrow, next week, next month).</li>
<li>I can also use commands to trigger different things, like sending the section to a better speech recognition engine.</li>
</ul>

<p>
By analyzing the text, I might be able to make my own command system.
</p>

<p>
So far, for starting keywords, I can use "start", "begin", or "open".
I pair that with one of these part keywords:
</p>

<ul class="org-ul">
<li>"section", "chapter", "topic", "summary": I use these pretty interchangeably at the moment. I want them to make a new Org heading.</li>
<li>"next steps": could be handy for being able to quickly see what to do next</li>
<li>"reminder":</li>
<li>"interruption": don't know what I'll use this for yet, but it might be useful to note this.</li>
<li>"tag", "keyword": maybe use this to add tags to the current section?</li>
</ul>

<p>
Then the code can extract the text until the matching "stop/close/end
&lt;part&gt;", assuming it happens within 50 words or so.
(<code>my-transcript-close-keyword-distance-words</code>)
</p>

<p>
Sometimes keywords get misrecognized. "Begin summary" sometimes
becomes "again summary" or "the game summary". I could try "open" and
"close". Commercial dictation programs like Dragon NaturallySpeaking
use "open" and "close" for punctuation, so that would probably work
fine. "Start" works well, but "end" doesn't because it can confused
with "and".
</p>

<p>
Sometimes an extra word sneaks in, either because I say it or because
the speech recognition tries too hard to guess. "Begin reminder" ends
up as "Begin a reminder." I changed from using regular expressions
that searched for just start-keyword + part-keyword to one that looked
for the start of the keyword phrase and then looked for the next
keyword within the next X words. (<code>my-transcript-scan-for-part-keyword</code>)
</p>

<details><summary>Recognizing phrases</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-open-keywords</span> <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"start"</span> <span class="org-string">"begin"</span> <span class="org-string">"open"</span>))
(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-close-keywords</span> <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"stop"</span> <span class="org-string">"end"</span> <span class="org-string">"close"</span>))
(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-part-keywords</span> <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"summary"</span> <span class="org-string">"chapter"</span> <span class="org-string">"topic"</span>
                                      <span class="org-string">"section"</span>
                                 <span class="org-string">"action"</span> <span class="org-string">"idea"</span> <span class="org-string">"journal"</span> <span class="org-string">"reminder"</span>
                                 <span class="org-string">"command"</span> <span class="org-string">"interruption"</span> <span class="org-string">"note"</span>
                                 <span class="org-string">"next step"</span> <span class="org-string">"next steps"</span> <span class="org-string">"tags"</span> <span class="org-string">"tag"</span> <span class="org-string">"keywords"</span> <span class="org-string">"keyword"</span>))

(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-part-keyword-distance-words</span> 2 <span class="org-doc">"Number of words to scan for part keyword."</span>)
(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-close-keyword-distance-words</span> 50 <span class="org-doc">"number of words to scan for stop keyword.</span>
<span class="org-doc">Put the keywords on the same line if found."</span>)
(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-scan-for-part-keyword</span> (before-part <span class="org-type">&amp;optional</span> part-keywords within-distance before-distance)
  <span class="org-doc">"Look for BEFORE-PART followed by PART-KEYWORDS.</span>
<span class="org-doc">There might be WITHIN-DISTANCE words between BEFORE-PART and PART-KEYWORDS,</span>
<span class="org-doc">and the pair might be within BEFORE-DISTANCE from point.</span>
<span class="org-doc">Distances are in words.</span>
<span class="org-doc">Return (start end before-part part) if found, nil otherwise."</span>
  (<span class="org-keyword">setq</span> before-part (<span class="org-keyword">pcase</span> before-part
                      (<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">start</span> my-transcript-open-keywords)
                      (<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">stop</span> my-transcript-close-keywords)
                      (<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">nil</span> (append my-transcript-open-keywords my-transcript-close-keywords))
                      (_ before-part)))
  (<span class="org-keyword">setq</span> part-keywords (<span class="org-keyword">or</span> part-keywords my-transcript-part-keywords))
  (<span class="org-keyword">when</span> (stringp part-keywords) (<span class="org-keyword">setq</span> part-keywords (list part-keywords)))
  (<span class="org-keyword">setq</span> within-distance (<span class="org-keyword">or</span> within-distance my-transcript-part-keyword-distance-words))
  (<span class="org-keyword">setq</span> before-distance (<span class="org-keyword">if</span> (eq before-distance t)
                            (point-max)
                          (<span class="org-keyword">or</span> before-distance my-transcript-close-keyword-distance-words)))
  (<span class="org-keyword">let</span> (result
        start end
        (before-point (<span class="org-keyword">save-excursion</span> (forward-word before-distance) (point)))
        before-word
        part-word)
    (<span class="org-keyword">save-excursion</span>
      (<span class="org-keyword">when</span> (looking-at (regexp-opt before-part))
        (<span class="org-keyword">setq</span> before-word (match-string 0) start (match-beginning 0))
        (<span class="org-keyword">when</span> (re-search-forward (regexp-opt part-keywords) (<span class="org-keyword">save-excursion</span> (forward-word within-distance) (point)) t)
          (<span class="org-keyword">setq</span> result (list start (match-end 0) before-word (match-string 0)))))
      (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (not result)
                  (re-search-forward (regexp-opt before-part) before-point t))
        (<span class="org-keyword">setq</span> before-word (match-string 0) start (match-beginning 0))
        (<span class="org-keyword">when</span> (re-search-forward (regexp-opt part-keywords) (<span class="org-keyword">save-excursion</span> (forward-word within-distance) (point)) t)
          (<span class="org-keyword">setq</span> result (list start (match-end 0) before-word (match-string 0)))))
      (<span class="org-keyword">when</span> result (goto-char (elt result 1)))
      result)))

(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">my-transcript-scan-for-part-keyword</span> ()
  (<span class="org-keyword">with-temp-buffer</span>
    (insert <span class="org-string">"some text start a reminder hello world stop there and do something stop reminder more text"</span>)
    (goto-char (point-min))
    (<span class="org-keyword">let</span> ((result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">start</span> nil)))
      (expect (elt result 2) <span class="org-builtin">:to-equal</span> <span class="org-string">"start"</span>)
      (expect (elt result 3) <span class="org-builtin">:to-equal</span> <span class="org-string">"reminder"</span>))
    (<span class="org-keyword">let</span> ((result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">stop</span> <span class="org-string">"reminder"</span>)))
      (expect (elt result 2) <span class="org-builtin">:to-equal</span> <span class="org-string">"stop"</span>)
      (expect (elt result 3) <span class="org-builtin">:to-equal</span> <span class="org-string">"reminder"</span>))))
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-splitting-the-lines-based-on-keywords-and-oopses" class="outline-2">
<h3 id="splitting-the-lines-based-on-keywords-and-oopses">Splitting the lines based on keywords and oopses</h3>
<div class="outline-text-2" id="text-splitting-the-lines-based-on-keywords-and-oopses">
<p>
Now I can use that to scan through the text. I want to put commands on
their own lines so that <code>subed-align</code> will get the timestamp for that
segment and so that the commands are easier to parse.
</p>

<p>
I also want to detect "oops" and split things up so that the start of
that line matches my correction after the "oops". I use
<a href="https://sachachua.com/dotemacs/index.html#split-up-oops-better">my-subed-split-oops</a> for that, which I should write about in another
post. By putting the oops fragment on its own line, I can use
<code>subed-align</code> to get a timestamp for just that segment. Then I can
either use <code>flush-lines</code> to get rid of anything with "oops" in it. I
can even remove the subtitle and use <code>subed-record-compile-media</code> to
compile audio/video without that segment, if I want to use the audio
without rerecording it.
</p>

<pre class="example" id="org43d27d8">
And the way I can help is by jotting words down in a mind map,
typing her sentences. Oops
typing, her sentences And generating, follow-up questions.
</pre>

<p>
I also all-caps the keyword phrases so that they're easier to see when
skimming the text file.
</p>

<details><summary>Alignment breaks</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-prepare-alignment-breaks</span> ()
  <span class="org-doc">"Split lines in preparation for forced alignment with aeneas.</span>

<span class="org-doc">Split \"oops\" so that it's at the end of the line and the</span>
<span class="org-doc">previous line starts with roughly the same words as the next</span>
<span class="org-doc">line, for easier removal.</span>

<span class="org-doc">Add a linebreak before \"begin/start\" followed by</span>
<span class="org-doc">`</span><span class="org-doc"><span class="org-constant">my-transcript-part-keywords</span></span><span class="org-doc">'.</span>

<span class="org-doc">Add a linebreak after \"stop\" followed by</span>
<span class="org-doc">`</span><span class="org-doc"><span class="org-constant">my-transcript-part-keywords</span></span><span class="org-doc">'.</span>

<span class="org-doc">Look for begin keyword ... stop keyword with at most</span>
<span class="org-doc">`</span><span class="org-doc"><span class="org-constant">my-transcript-part-keyword-distance-words</span></span><span class="org-doc">' between them and put them on one</span>
<span class="org-doc">line."</span>
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">let</span> ((case-fold-search t) result close-result)
    (my-split-oops)
    <span class="org-comment-delimiter">;; </span><span class="org-comment">break "begin/start keyword"</span>
    (goto-char (point-min))
    (<span class="org-keyword">while</span> (<span class="org-keyword">setq</span> result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">start</span> nil nil t))
      (goto-char (car result))
      (delete-region (car result) (elt result 1))
      (insert <span class="org-string">"\n"</span> (upcase (concat (elt result 2) <span class="org-string">" "</span> (elt result 3))) <span class="org-string">"\n"</span>))
    <span class="org-comment-delimiter">;; </span><span class="org-comment">break stop</span>
    (goto-char (point-min))
    (<span class="org-keyword">while</span> (<span class="org-keyword">setq</span> result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">stop</span> nil nil t))
      (goto-char (car result))
      (delete-region (car result) (elt result 1))
      (insert (upcase (concat (elt result 2) <span class="org-string">" "</span> (elt result 3))) <span class="org-string">"\n"</span>))
    <span class="org-comment-delimiter">;; </span><span class="org-comment">try to get start and end sections on one line</span>
    (goto-char (point-min))
    (<span class="org-keyword">while</span> (<span class="org-keyword">setq</span> result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">start</span> nil nil t))
      (goto-char (elt result 1))
      (<span class="org-keyword">setq</span> stop-result (my-transcript-scan-for-part-keyword <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">stop</span> (elt result 3)))
      (<span class="org-keyword">if</span> stop-result
          (<span class="org-keyword">progn</span>
            (goto-char (car stop-result))
            (<span class="org-keyword">while</span> (re-search-backward <span class="org-string">" *\n+ *"</span> (car result) t)
              (replace-match <span class="org-string">" "</span>)))
        <span class="org-comment-delimiter">;; </span><span class="org-comment">no stop keyword; are we on an empty line? If so, just merge it with the next one</span>
        (<span class="org-keyword">when</span> (looking-at <span class="org-string">"\n+ *"</span>)
          (replace-match <span class="org-string">" "</span>))))
    <span class="org-comment-delimiter">;; </span><span class="org-comment">remove empty lines</span>
    (goto-char (point-min))
    (<span class="org-keyword">when</span> (looking-at <span class="org-string">"\n+"</span>) (replace-match <span class="org-string">""</span>))
    (<span class="org-keyword">while</span> (re-search-forward <span class="org-string">"\n\n+"</span> nil t)
      (replace-match <span class="org-string">"\n"</span>))
    (goto-char (point-min))
    (<span class="org-keyword">while</span> (re-search-forward <span class="org-string">" *\n *"</span> nil t)
      (replace-match <span class="org-string">"\n"</span>))))

(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">my-transcript-prepare-alignment-breaks</span> ()
  (<span class="org-keyword">with-temp-buffer</span>
    (insert <span class="org-string">"some text start a reminder hello world stop there and do something stop reminder more text"</span>)
    (goto-char (point-min))
    (my-transcript-prepare-alignment-breaks)
    (expect (buffer-string) <span class="org-builtin">:to-equal</span>
            <span class="org-string">"some text</span>
<span class="org-string">START REMINDER hello world stop there and do something STOP REMINDER</span>
<span class="org-string">more text"</span>)))
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-preparing-the-vtt-subtitles" class="outline-2">
<h3 id="preparing-the-vtt-subtitles">Preparing the VTT subtitles</h3>
<div class="outline-text-2" id="text-preparing-the-vtt-subtitles">
<p>
<code>subed-align</code> gives me a VTT subtitle file with timestamps and text. I
add NOTE comments with the keywords and make <code>subed:</code> links to the
timestamps using the <code>ol-subed.el</code> that I just added.
</p>

<details><summary>Putting keyword phrases in comments</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-get-subtitle-note-based-on-keywords</span> (sub-text)
  (<span class="org-keyword">let</span> ((case-fold-search t))
    (<span class="org-keyword">when</span> (string-match (concat <span class="org-string">"^"</span>
                                (regexp-opt my-transcript-open-keywords)
                                <span class="org-string">" </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">"</span> (regexp-opt my-transcript-part-keywords) <span class="org-string">"</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"> </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string"> "</span>
                                (regexp-opt my-transcript-close-keywords) <span class="org-string">" "</span>
                                (regexp-opt my-transcript-part-keywords) <span class="org-string">"</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">?$"</span>)
                        sub-text)
      (concat (match-string 1 sub-text) <span class="org-string">": "</span> (match-string 2 sub-text)))))
(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">my-transcript-get-subtitle-note-based-on-keywords</span> ()
  (expect (my-transcript-get-subtitle-note-based-on-keywords <span class="org-string">"BEGIN NEXT STEPS . Think about how dictation helps me practice slower speed. CLOSE NEXT STEPS"</span>)
          <span class="org-builtin">:to-equal</span> <span class="org-string">"NEXT STEPS: . Think about how dictation helps me practice slower speed."</span>)
  (expect (my-transcript-get-subtitle-note-based-on-keywords <span class="org-string">"START SUMMARY hello world STOP SUMMARY"</span>)
          <span class="org-builtin">:to-equal</span> <span class="org-string">"SUMMARY: hello world"</span>)
  (expect (my-transcript-get-subtitle-note-based-on-keywords <span class="org-string">"START CHAPTER hello world again"</span>)
          <span class="org-builtin">:to-equal</span> <span class="org-string">"CHAPTER: hello world again"</span>)
  )
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-formatting-the-subtitles-into-org-mode-subtrees" class="outline-2">
<h3 id="formatting-the-subtitles-into-org-mode-subtrees">Formatting the subtitles into Org Mode subtrees</h3>
<div class="outline-text-2" id="text-formatting-the-subtitles-into-org-mode-subtrees">
<p>
The last step is to take the list of subtitles and format it into the subtree.
</p>

<details><summary>Formatting the subtree</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp"><span class="org-comment-delimiter">;; </span><span class="org-comment">todo: sort the completion? https://emacs.stackexchange.com/questions/55502/list-files-in-directory-in-reverse-order-of-date</span>
<span class="org-comment-delimiter">;;</span>
(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-insert-subtitles-as-org-tree</span> (vtt-filename)
  (<span class="org-keyword">interactive</span> (list (read-file-name <span class="org-string">"VTT: "</span> (expand-file-name <span class="org-string">"./"</span> my-phone-recording-dir) nil t nil
                                     (<span class="org-keyword">lambda</span> (s) (string-match <span class="org-string">"\\.vtt$"</span> s)))))
  (<span class="org-keyword">let*</span> ((subtitles
          (mapcar (<span class="org-keyword">lambda</span> (sub)
                    (<span class="org-keyword">unless</span> (elt sub 4)
                      (<span class="org-keyword">setf</span> (elt sub 4)
                            (my-transcript-get-subtitle-note-based-on-keywords (elt sub 3))))
                    sub)
                  (subed-parse-file vtt-filename)))
         (start-date (my-transcript-get-file-start-time vtt-filename))
         chapters tags
         start-of-entry)
    (<span class="org-keyword">setq</span> start-of-entry (point))
    (insert (format <span class="org-string">"* TODO Review braindump from %s  :braindump:\n\n"</span> (file-name-base vtt-filename)))
    (org-entry-put (point) <span class="org-string">"CREATED"</span>
                   (concat <span class="org-string">"["</span> (format-time-string
                                (cdr org-timestamp-formats)
                                (my-transcript-get-file-start-time
                                 (file-name-nondirectory vtt-filename))) <span class="org-string"><span class="org-warning">"]"</span></span><span class="org-warning">))</span>
    (insert
     (format <span class="org-string">"%s - %s - %s\n"</span>
             (org-link-make-string (concat <span class="org-string">"file:"</span> (file-name-sans-extension vtt-filename) <span class="org-string">".vtt"</span>)
                                   <span class="org-string">"VTT"</span>)
             (org-link-make-string (concat <span class="org-string">"file:"</span> (file-name-sans-extension vtt-filename) <span class="org-string">".txt"</span>)
                                   <span class="org-string">"Text"</span>)
             (org-link-make-string (concat <span class="org-string">"file:"</span> (file-name-sans-extension vtt-filename) <span class="org-string">".m4a"</span>)
                                   <span class="org-string">"Audio"</span>)))
    (<span class="org-keyword">save-excursion</span>
      (insert <span class="org-string">"** Transcript\n"</span>)
      <span class="org-comment-delimiter">;; </span><span class="org-comment">add each subtitle; add an ID in case we change the title</span>
      (mapc
       (<span class="org-keyword">lambda</span> (sub)
         (<span class="org-keyword">when</span> (elt sub 4)
           (<span class="org-keyword">let</span> ((note (my-transcript-get-subtitle-note-based-on-keywords (elt sub 3))))
             (insert (concat <span class="org-string">"*** "</span>
                             note <span class="org-string">" "</span>
                             (org-link-make-string
                              (format <span class="org-string">"subed:%s::%s"</span>
                                      vtt-filename
                                      (my-msecs-to-timestamp (elt sub 1)))
                              <span class="org-string">"VTT"</span>)
                             <span class="org-string">"\n\n"</span>))
             (org-entry-put (point) <span class="org-string">"CREATED"</span>
                   (concat <span class="org-string">"["</span> (format-time-string
                                (cdr org-timestamp-formats)
                                (time-add start-date
                                          (seconds-to-time (/ (elt sub 1) 1000.0)))) <span class="org-string"><span class="org-warning">"]"</span></span><span class="org-warning">))</span>
             (org-entry-put (point) <span class="org-string">"START"</span> (my-msecs-to-timestamp (elt sub 2)))
             (<span class="org-keyword">when</span> (elt sub 4)
               (<span class="org-keyword">when</span> (string-match <span class="org-string">"command: .*recognize"</span> (elt sub 4))
                 (<span class="org-keyword">save-excursion</span>
                   <span class="org-comment-delimiter">;; </span><span class="org-comment">TODO: scope this to just the section someday</span>
                   (goto-char start-of-entry)
                   (org-set-tags (append (list <span class="org-string">"recognize"</span>) (org-get-tags)))))
               (<span class="org-keyword">when</span> (string-match <span class="org-string">"command: .*outline"</span> (elt sub 4))
                 (<span class="org-keyword">save-excursion</span>
                   (goto-char start-of-entry)
                   (org-set-tags (append (list <span class="org-string">"outline"</span>) (org-get-tags)))))
               (<span class="org-keyword">when</span> (string-match <span class="org-string">"^time"</span> (elt sub 4))
                 (insert <span class="org-string">"["</span> (org-format-time-string (cdr org-timestamp-formats)
                                                     (time-add start-date (seconds-to-time (/ (elt sub 1) 1000))))
                         <span class="org-string">"]\n"</span>))
               (<span class="org-keyword">when</span> (string-match <span class="org-string">"command: .+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">high</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">low</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> (elt sub 4))
                 (<span class="org-keyword">save-excursion</span>
                   (goto-char start-of-entry)
                   (org-priority (<span class="org-keyword">if</span> (string= (downcase (match-string 1)) <span class="org-string">"high"</span>) ?A ?C))))
               (<span class="org-keyword">when</span> (string-match <span class="org-string">"</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(?:</span></span><span class="org-string">tags?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">keywords?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">: </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> (elt sub 4))
                 (<span class="org-keyword">save-excursion</span>
                   (goto-char start-of-entry)
                   (org-set-tags (append (split-string (match-string 1) <span class="org-string">" "</span>) (org-get-tags))))))
             (add-to-list <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">chapters</span>
                          (format <span class="org-string">"- %s (%s)"</span>
                                  (org-link-make-string (concat <span class="org-string">"id:"</span> (org-id-get-create))
                                                        note)
                                  (org-link-make-string
                                   (format <span class="org-string">"subed:%s::%s"</span>
                                           vtt-filename
                                           (my-msecs-to-timestamp (elt sub 1)))
                                   <span class="org-string">"VTT"</span>)))))
         (insert (elt sub 3) <span class="org-string">"\n"</span>))
       subtitles))
    (<span class="org-keyword">when</span> chapters
      (insert (string-join (nreverse chapters) <span class="org-string">"\n"</span>) <span class="org-string">"\n"</span>))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-get-file-start-time</span> (filename)
  (<span class="org-keyword">setq</span> filename (file-name-base filename))
  (<span class="org-keyword">cond</span>
   ((string-match <span class="org-string">"^</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]\\.[0-9][0-9]</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> filename)
    (date-to-time (replace-regexp-in-string <span class="org-string">"\\."</span> <span class="org-string">":"</span> (match-string 0 filename))))
   ((string-match <span class="org-string">"^</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(?:</span></span><span class="org-string">Copy of </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> ][</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> ][</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> ]</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> ]+ at </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">[0-9]+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">-</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">[0-9]+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> filename)
    (<span class="org-keyword">let*</span> ((day (match-string 1 filename))
           (hour (match-string 2 filename))
           (min (match-string 3 filename))
           (changed-time (file-attribute-modification-time
                          (file-attributes filename)))
           (decoded-time (decode-time changed-time)))
      <span class="org-comment-delimiter">;; </span><span class="org-comment">get the day on or before changed-time</span>
      (<span class="org-keyword">if</span> (string= (format-time-string <span class="org-string">"%a"</span> changed-time) day)
          (encode-time (append
                        (list
                         0
                         (string-to-number min)
                         (string-to-number hour))
                        (seq-drop decoded-time 3)))
        <span class="org-comment-delimiter">;; </span><span class="org-comment">synchronized maybe within the week after</span>
        (org-read-date t t (concat <span class="org-string">"-"</span> day <span class="org-string">" "</span> hour <span class="org-string">":"</span> min)))))))
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-process-a-single-transcript-from-the-raw-text-file" class="outline-2">
<h3 id="process-a-single-transcript-from-the-raw-text-file">Process a single transcript from the raw text file</h3>
<div class="outline-text-2" id="text-process-a-single-transcript-from-the-raw-text-file">
<p>
So now we put that all together: rename the file using the calculated
start time, prepare the alignment breaks, align the file to get the
timestamps, and add the subtree to an Org file.
</p>

<details><summary>Making the TODO</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-transcript-braindump-file</span> <span class="org-string">"~/sync/orgzly/braindump.org"</span>)

(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-make-todo</span> (text-file <span class="org-type">&amp;optional</span> force)
  <span class="org-doc">"Add TEXT-FILE as a TODO."</span>
  (<span class="org-keyword">interactive</span> (list (buffer-file-name) current-prefix-arg))
  <span class="org-comment-delimiter">;; </span><span class="org-comment">rename the files to use the timestamps</span>
  (<span class="org-keyword">unless</span> (string-match <span class="org-string">"^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]"</span>
                        (file-name-base text-file))
    (<span class="org-keyword">setq</span> text-file (my-transcript-rename-files-based-on-time text-file)))
  (<span class="org-keyword">let*</span> ((recording (concat (file-name-sans-extension text-file) <span class="org-string">".m4a"</span>))
         (start (my-transcript-get-file-start-time text-file))
         (vtt (concat (file-name-sans-extension text-file) <span class="org-string">".vtt"</span>))
         chapters
         (title (concat <span class="org-string">"Review braindump "</span> text-file))
         existing)
    <span class="org-comment-delimiter">;; </span><span class="org-comment">check if already exists</span>
    (<span class="org-keyword">with-current-buffer</span> (find-file-noselect my-transcript-braindump-file)
      (<span class="org-keyword">save-excursion</span>
        (goto-char (point-min))
        (<span class="org-keyword">setq</span> existing (org-find-exact-headline-in-buffer title))))
    (<span class="org-keyword">if</span> (<span class="org-keyword">and</span> existing (not force))
        (<span class="org-keyword">progn</span>
          (message <span class="org-string">"Going to existing heading"</span>)
          (org-goto-marker-or-bmk existing))
      (<span class="org-keyword">if</span> (<span class="org-keyword">or</span> (null my-transcript-last-processed-time)
              (time-less-p my-transcript-last-processed-time start))
          (customize-save-variable <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-transcript-last-processed-time</span> start))
      (find-file text-file)
      (my-transcript-prepare-alignment-breaks)
      (save-buffer)
      (<span class="org-keyword">when</span> (file-exists-p vtt) (delete-file vtt))
      (<span class="org-keyword">when</span> (get-file-buffer vtt) (kill-buffer (get-file-buffer vtt)))
      (subed-align recording text-file <span class="org-string">"VTT"</span>)
      (<span class="org-keyword">when</span> (get-file-buffer vtt) (kill-buffer (get-file-buffer vtt)))
      (find-file my-transcript-braindump-file)
      (goto-char (point-min))
      (<span class="org-keyword">if</span> existing
          (<span class="org-keyword">progn</span>
            (org-goto-marker-or-bmk existing)
            (delete-region (point) (org-end-of-subtree)))
        (org-next-visible-heading 1))
      (my-transcript-insert-subtitles-as-org-tree vtt))))
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-process-multiple-files" class="outline-2">
<h3 id="process-multiple-files">Process multiple files</h3>
<div class="outline-text-2" id="text-process-multiple-files">
<p>
I want to process multiple files in one batch.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-process</span> (files <span class="org-type">&amp;optional</span> force)
  (<span class="org-keyword">interactive</span> (list (<span class="org-keyword">cond</span>
                      ((<span class="org-keyword">and</span> (derived-mode-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">dired-mode</span>)
                            (dired-get-marked-files))
                       (dired-get-marked-files))
                      ((derived-mode-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">dired-mode</span>)
                       (list (dired-get-filename)))
                      ((string-match <span class="org-string">"\\.txt$"</span> (buffer-file-name))
                       (list (buffer-file-name)))
                      (t (read-file-name <span class="org-string">"Transcript: "</span>)))
                     current-prefix-arg))
  (mapc (<span class="org-keyword">lambda</span> (f)
          (<span class="org-keyword">when</span> (string-match <span class="org-string">"txt"</span> f)
            (my-transcript-make-todo f force))) <span class="org-warning">files))</span>
</pre>
</div>


<p>
It would be nice to have it automatically keep track of the latest one
that's been processed, maybe via <code>customize-save-variable</code>. This still
needs some tinkering with.
</p>

<details><summary>Processing new files</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defcustom</span> <span class="org-variable-name">my-transcript-last-processed-time</span> nil
  <span class="org-doc">"The timestamp of the last processed transcript."</span>
  <span class="org-builtin">:group</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">sacha</span>
  <span class="org-builtin">:type</span> <span class="org-highlight-quoted-quote">'</span>(repeat integer))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-process-since-last</span> ()
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">let</span> ((files
         (seq-filter
          (<span class="org-keyword">lambda</span> (f)
            (<span class="org-keyword">or</span> (null my-transcript-last-processed-time)
                (time-less-p my-transcript-last-processed-time
                             (my-transcript-get-file-start-time f))))
          (directory-files my-phone-recording-dir <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">full</span> <span class="org-string">" at [0-9][0-9]-[0-9][0-9]\\.txt</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]\\.[0-9][0-9]\\.txt"</span>))))
    (mapc (<span class="org-keyword">lambda</span> (f)
            (my-transcript-make-todo f)
            (<span class="org-keyword">let</span> ((start (my-transcript-get-file-start-time f)))
              (<span class="org-keyword">if</span> (time-less-p my-transcript-last-processed-time start)
                  (<span class="org-keyword">setq</span> my-transcript-last-processed-time start))))
          files))
  (customize-save-variable <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-transcript-last-processed-time</span> my-transcript-last-processed-time))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-transcript-rename-files-based-on-time</span> (text-file)
  <span class="org-doc">"Rename TEXT-FILE based on date. Return the new text file."</span>
  (<span class="org-keyword">interactive</span> (list (<span class="org-keyword">if</span> (derived-mode-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">dired-mode</span>) (dired-get-filename)
                       (buffer-file-name))))
  (<span class="org-keyword">if</span> (string-match <span class="org-string">"^[0-9][0-9][0-9][0-9]"</span> text-file)
      text-file                         <span class="org-comment-delimiter">; </span><span class="org-comment">no change, already uses date</span>
    (<span class="org-keyword">let*</span> ((start (my-transcript-get-file-start-time (file-name-base text-file)))
           (new-base (format-time-string <span class="org-string">"%Y-%m-%dT%H.%M"</span> start)))
      (<span class="org-keyword">if</span> (file-exists-p (expand-file-name (concat new-base <span class="org-string">".txt"</span>)
                                           (file-name-directory text-file)))
          (<span class="org-warning">error</span> <span class="org-string">"%s already exists"</span> new-base)
        (<span class="org-keyword">dolist</span> (ext <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">".txt"</span> <span class="org-string">".m4a"</span> <span class="org-string">".vtt"</span>))
          (<span class="org-keyword">if</span> (file-exists-p (concat (file-name-sans-extension text-file) ext))
              (rename-file (concat (file-name-sans-extension text-file) ext)
                           (expand-file-name (concat new-base ext)
                                             (file-name-directory text-file)))))
        (expand-file-name (concat new-base <span class="org-string">".txt"</span>)
                          (file-name-directory text-file))))))
</pre>
</div>

</details>
</div>
</div>
<div id="outline-container-ideas-for-next-steps" class="outline-2">
<h3 id="ideas-for-next-steps">Ideas for next steps</h3>
<div class="outline-text-2" id="text-ideas-for-next-steps">
<ul class="org-ul">
<li>Make the commands process things even more automatically.</li>
<li>Experiment with just sending everything to OpenAI Whisper instead of conditionally sending it based on the keywords (which might not be recognized).</li>
<li>See if I want to reuse more sentences or move them around.</li>
<li>Find out where people who have thought about dictation keywords have their notes; probably don't have to reinvent the wheel here</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2023/12/audio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords/index.org">View org source for this post</a></div>
<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#transcript-keywords">Emacs configuration.</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2023%2F12%2Faudio-braindump-workflow-tweaks-adding-org-mode-hyperlinks-to-recordings-based-on-keywords%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry>
</feed>